知识图库
Java知识库
JDK线程池实现原理
Java中的强、软、弱、虚引用
深入拆解Java虚拟机
01 开篇词 | 为什么我们要学习Java虚拟机?
02 Java代码是怎么运行的?
03 Java的基本类型
04 Java虚拟机是如何加载Java类的?
05 JVM是如何执行方法调用的?(上)
06 JVM是如何执行方法调用的?(下)
7 JVM是如何处理异常的?
Java面试常见问题整理
Java面试常见问题-Java 基础篇
Java面试常见问题-Jvm篇
Java面试常见问题-并发篇
Android知识库
Kotlin编程第一课
1 开篇词 | 入门Kotlin有多容易,精通Kotlin就有多难
2 Kotlin基础语法:正式开启学习之旅
3 面向对象:理解Kotlin设计者的良苦用心
4 Kotlin原理:编译器在幕后干了哪些“好事”?
5 实战:构建一个Kotlin版本的四则运算计算器
6 object关键字:你到底有多少种用法?
7 扩展:你的能力边界到底在哪里?
8 高阶函数:为什么说函数是Kotlin的“一等公民”?
9 实战:用Kotlin写一个英语词频统计程序
10 加餐一 | 初识Kotlin函数式编程
11 委托:你为何总是被低估?
12 泛型:逆变or协变,傻傻分不清?
13 注解与反射:进阶必备技能
14 实战:用Kotlin实现一个网络请求框架KtHttp
15 加餐二 | 什么是“表达式思维”?
16 加餐三 | 什么是“不变性思维”?
17 加餐四 | 什么是“空安全思维”?
18 春节刷题计划(一)| 当Kotlin遇上LeetCode
19 春节刷题计划(二)| 一题三解,搞定版本号判断
20 春节刷题计划(三)| 一题双解,搞定求解方程
21 春节刷题计划(四)| 一题三解,搞定分式加减法
22 什么是“协程思维模型”?
23 如何启动协程?
24 挂起函数:Kotlin协程的核心
25 Job:协程也有生命周期吗?
26 Context:万物皆为Context?
27 实战:让KtHttp支持挂起函数
28 期中考试 | 用Kotlin实现图片处理程序
29 题目解答 | 期中考试版本参考实现
30 Channel:为什么说Channel是“热”的?
31 Flow:为什么说Flow是“冷”的?
32 select:到底是在选择什么?
33 并发:协程不需要处理同步吗?
34 异常:try-catch居然会不起作用?坑!
35 实战:让KtHttp支持Flow
36 答疑(一)| Java和Kotlin到底谁好谁坏?
37 集合操作符:你也会“看完就忘”吗?
38 协程源码的地图:如何读源码才不会迷失?
39 图解挂起函数:原来你就是个状态机?
40 加餐五 | 深入理解协程基础元素
41 launch的背后到底发生了什么?
42 Dispatchers是如何工作的?
43 CoroutineScope是如何管理协程的?
44 图解Channel:如何理解它的CSP通信模型?
45 图解Flow:原来你是只纸老虎?
46 Java Android开发者还会有未来吗?
47 Kotlin与Jetpack简直是天生一对!
48 用Kotlin写一个GitHub Trending App
49 结课测试 | “Kotlin编程第一课”100分试卷等你来挑战!
50 结束语 | 不忘初心
Android Framework 教程—基础篇
01 Ubuntu 使用快速入门
02 Make 构建工具入门
03 理解 Unicode UTF-8 UTF-16 UTF-32
04 Linux Shell 脚本编程入门1——核心基础语法
05 SeAndroid 使用极速上手
06 理解 C++ 的 Memory Order
07 AOSP 极速上手
08 系统开发工具推荐
09 添加 Product
运动相关知识
爱上跑步
01 开篇词 | 跑步,不那么简单的事儿
02 跑两步就喘了,是不是我不适合跑步?
03 正确的跑步姿势是什么样的?
04 为什么跑步要先热身?
05 怎样制定你的第一个10公里跑步计划?
06 快跑和慢跑,哪个更燃脂?
07 普通跑步者应该如何选择跑鞋?
08 买跑步装备,不要踩这些坑儿
09 跑步前到底应不应该吃东西?
10 跑步到底伤不伤膝盖?
11 参加了20场马拉松,我是如何准备的?
12 除了马拉松,还能参加哪些跑步赛事?
13 热点问题答疑 :跑完第二天浑身疼,还要不要继续跑?
健身房计划
[DeepSeek]减脂塑形计划
【DeepSeek】训练周期安排
每日餐饮热量控制
减脂期间食物推荐避坑指南
HarmonyOS知识库
其他知识类目
心理学相关
如何学点心理学——关于非专业人士学心理学的一点建议
投射性认同
-
+
首页
08 系统开发工具推荐
>i [配套视频教程](https://link.juejin.cn/?target=https%3A%2F%2Fwww.bilibili.com%2Fvideo%2FBV1Zk4y1E7it%2F%3Fspm_id_from%3D333.999.0.0%26vd_source%3Ddc959648d92fce190c8461996c134681) 下面推荐的是我常用的工具,如果你有好用的开发工具欢迎在评论区留言讨论交流。 ### 1. ssh 服务与 Tabby Terminal ssh 服务使得我们在其他平台上通过 ssh 客户端程序即可访问到我们的 linux 服务器。方便我们的开发工作。 接下来我们分为两步来介绍 ssh 服务的搭建以及客户端的使用: #### 1.1 配置 Ubuntu ssh 服务 安装 openssh-server ```bash sudo apt install openssh-server # 开机自启动 sudo systemctl enable ssh # 重启 ssh 服务 sudo systemctl restart ssh ``` 配置固定 IP 地址 ```bash sudo apt install net-tools -y cd /etc/netplan # 备份旧的配置文件 sudo cp 00-installer-config.yaml 00-installer-config.yaml_before ``` ```bash # 修改配置文件: sudo vim 00-installer-config.yaml network: version: 2 renderer: NetworkManager ethernets: enp0s5: # 网卡名称 dhcp4: no # 关闭dhcp dhcp6: no addresses: [10.0.0.89/24] # 静态ip,根据自己网络情况配置 gateway4: 10.0.0.1 # 网关,根据自己网络情况配置 nameservers: addresses: [10.0.0.1, 114.114.114.114] #dns,根据自己网络情况配置 ``` 使配置生效: ```bash sudo netplan apply ``` 至此,固定 IP 就配置好了。 #### 1.2 ssh 客户端 Tabby Terminal Tabby 是一款高颜值,开源,免费,多平台的命令行工具,ssh 客户端是它的功能之一。 我们在 Tabby官网 下载安装好后,配置好 ssh 连接配置信息即可使用 ssh 服务。 配置的过程如下: 1. 点击配置  2. 点击配置与连接  3. 点击新配置  4. 下滑菜单,选择 SSH 连接  5. 输入 ssh 服务信息 - 名称,随意 - 主机填写 linux 的固定 IP 地址,端口 22 - 用户名填写实际用户名 - 点击设置密码,添加用户名对应的密码 - 点击保存  6. 鼠标移动至 UbuntuForAndroid 选项,点击三角形  7. 进入远程 ssh 终端界面  至此,我们就可以远程管理我们的 linux 了。 ### 2. vim vim 主要用于文件的简单修改,需要掌握: - 文件的简单修改 - 文件内容搜索 #### 2.1 vim 基本使用 ##### 2.1.1 一般模式 通过 `vim + 文件名`,进入 vim 环境(test.txt 可以是当前目录已存在的文件,也可以是当前目录不存在的文件。): ```bash vim test.txt ``` 此时,我们在 vim 的一般模式下,如果 test.txt 文件有内容,我们可以通过: - j 下移光标 - k 上移光标 - h 左移光标 - l 右移光标 如果用的不习惯,上下左右方向键也可以移动光标。 ##### 2.1.2 编辑模式 在一般模式下,输入 a i o 可以进入编辑模式,编辑模式下,我们可以输入文本修改文件内容。 a i o 的区别如下: - a:在当前光标下一位插入 - i:当前光标处插入 - o:换行并创建全新空白行,并在行首插入 在编辑模式下,我们点击 esc 键即可回到一般模式。 ##### 2.1.3 命令行模式 在一般模式下,输入分号,就会进入命令行模式。在命令行中,可以输入不同的指令或者字符串以实现不同的功能。其中涉及的最常用的功能包括了两类: - 退出 vim - 当前文本中,搜索字符串 进入命令行模式后,有三种方式来退出 vim: - 当前文件没有做任何改变时,输入 q 指令,退出 vim 环境 - 当前文件做了一些修改,如果想放弃已修改的内容,输入 q! 指令,退出 vim 环境 - 当前文件做了一些修改,如果想保存已修改的内容,输入 wq 指令,退出 vim 环境 进入命令行模式后,我们还可以输入 / + 字符串,点击回车键,进入搜索模式,点击 N 键,光标就会在匹配处依次跳动。 在一般模式下,我们也可以直接输入 / + 字符串进行搜索。 ##### 2.1.4 vim 基本使用小结 vim 编辑器的三种模式间切换如下图所示:  ### 3. find + grep 命令 Android 系统源码繁杂,通常我们通过 find 命令来查找我们关心的文件。使用 find + grep 命令查找我们关心的文件内容。 - 找文件,比如 service_manager.c ```bash find . -name "service_manager.c" ./frameworks/native/cmds/servicemanager/service_manager.c ``` - 找文件内容,找 recyclerview 库 ```bash find . -name "Android.bp" | xargs grep "name: \".*recyclerview.*\"" ./prebuilts/sdk/current/androidx/Android.bp: name: "androidx.recyclerview_recyclerview-selection-nodeps", ./prebuilts/sdk/current/androidx/Android.bp: name: "androidx.recyclerview_recyclerview-selection", ./prebuilts/sdk/current/androidx/Android.bp: name: "androidx.recyclerview_recyclerview-nodeps", ./prebuilts/sdk/current/androidx/Android.bp: name: "androidx.recyclerview_recyclerview", ./prebuilts/sdk/current/support/Android.bp: name: "android-support-recyclerview-selection-nodeps", ./prebuilts/sdk/current/support/Android.bp: name: "android-support-recyclerview-selection", ./prebuilts/sdk/current/support/Android.bp: name: "android-support-v7-recyclerview-nodeps", ./prebuilts/sdk/current/support/Android.bp: name: "android-support-v7-recyclerview", ``` ### 4. Samba 服务器搭建 Samba 是一款数据共享的软件,可用于 Ubuntu 与 Windows 之间共享源代码,传输文件。 Ubuntu 安装 samba 服务端: ```bash sudo apt install samba ``` 配置 samba,修改 /etc/samba/smb.conf,添加如下内容: ```bash [Project] comment = project path = /home/zzh0838/Project #你自己需要共享的目录 browseable = yes writable = yes ``` 后续操作: ```bash sudo smbpasswd -a username #这里是当前用户名 sudo systemctl enable smbd #samba 开机自启动 sudo systemctl restart smbd #重启 samba ``` windows 访问 Ubuntu 共享的文件键: win 键加 R 键,跳出运行窗口,输入 \\10.0.0.89,其中 10.0.0.89 是我的 ubuntu 的 IP 地址,你需要根据你自己的情况修改为自己的 Ubuntu 的 IP 地址。  点击确定,即可访问到 Ubuntu 中共享的文件了:  双击 Project,进入到下面的文件夹中:  ### 5. AIDEGen + Android Studio #### 5.1 准备工作 AIDEGen,我叫它 “爱得跟”,大概是 Android10 中,google 推出的一个工具,用于方便开发者使用 IDE 来查看和修改系统源码。 使用 “爱得跟” 之前我们需要做一些准备工作,编译 sdk: ```bash source build/envsetup.sh lunch sdk-eng # or #lunch sdk-userdebug # or #lunch sdk-user make sdk ``` 接着我们需要去 google 官方下载 Android Studio,并将其放到 /opt 目录下。 接下来,选择我们的目标 Product: ```bash source build/envsetup.sh lunch aosp_x86_64-eng ``` 做好以上准备工作后,我们就可以打开系统模块了,这里我们以 Settings 为例: ```bash # Settings 更换为其他模块名或是模块存在的路径即可打开其他模块 aidegen Settings -i s # -i 表示使用ide,s 表示 Android Studio ``` #### 5.2 Android Studio 配置 稍作等待,Android Studio 就打开了,不过现在还不能直接使用,我们还需要做一些基本的配置: ##### 5.2.1 添加源码中的 jdk 和 sdk Android Studio 打开后,右下角会出现一个提示框(如果没有出现,点击 file -> Invalidate Caches -> Invalidate and Restart):  点击 Configure,出现以下界面:  点击 ok 即可。 接着配置 jdk 和 sdk,点击 file -> Project Structure:  接着点击 + 号:  点击 Add JDK:  选择源码下的 prebuilts/jdk/jdk9/linux-x86,然后点击 ok:  接着将 name 修改为 aosp10-jdk9,然后点击右下角 apply:  接着点击 + 号,添加 Android SDK:  选择系统源码目录下的 `out/host/linux-x86/sdk/sdk/android-sdk_eng.zzh0838_linux-x86 `(最后一个文件夹的名字和你的用户名相关,你的和我的可能不一样),然后点击 ok:  接着 Java SDK 选择刚刚添加的 aosp10-jdk9,点击 ok:  接着,修改 skd 的名字为 aosp10-android-sdk29:  点击 ok 即可。 ##### 5.2.2 配置项目的 sdk 接着我们需要配置项目的 sdk,点击 file -> Project Structure,点击左侧 Project,右侧 SDK 选项选择 aosp10-android-sdk:  点击左侧 Modules,中间选择 Settings,右侧 Module SDK 选择 Project SDK:  接着,中间选择 dependencies-Settings,右侧 Module SDK 选择 Project SDK:  最后点击 apply,项目开始重新索引,项目内绝大部分类方法变量均可正确跳转。 至此,配置完成。 ##### 5.3.3 在 Android Stuido 中调试系统App Settings 首先,我们开一个新的终端,打开模拟器: ```bash source build/envsetup.sh lunch aosp_x86_64-eng emulator ``` 接着我们在 `Settings/AndroidManifest.xml` 查找到 `Settings App` 的首 Activity 为 `SettingsHomepageActivity`,我们在其 onCreate 出打一个断点:  接着在 Android 模拟器中打开 Settings 应用。 接着点击 android studio 的 debug 按钮:  在弹出的窗口中,依次选择 Settings 和 com.android.settings,然后点击 ok:  在模拟器中,点击返回键,再次进入 Settings 应用,即可进入调试界面:  接着我们就可以顺利的进行调试了。 ### 6. VSCode VSCode 是一款微软推出的文本编辑器,同个它的插件系统可以实现类 ide 的体验,在功能性和适应性角度,非常适合用于 Android 系统开发。 我们可以通过两种方式来使用 VSCode - Ubuntu 本机使用 - Windows 通过 remote-ssh 插件远程使用 VSCode 编辑linux 上的代码 #### 6.1 Ubuntu 本机使用 首先是安装 VScode,在官网下载好 deb 格式的安装包,接着安装: ```bash sudo dpkg -i code_1.76.2-1678817801_amd64.deb ``` 这样我们就可以使用 vscode 了,我们打开 vscode,然后通过 file -> open folder 选择我们的系统源码,即可打开整个系统源码。  当然,我们根据需要只打开我们关心的模块。 另外为了使我们的 vscode 更好用更好看,通常我们会安装一下一些插件: - C/C++ Extension Pack - Extension Pack for Java - Makefile Tools - RC Script language - Android System Tools - Android Studio Color Theme #### 6.2 远程使用 在 Windows 下,我们也可以通过 VSCode 的 remote-ssh 插件远程修改我们的系统源码。 首先我们需要在官网下载好 VSCode 的安装包,然后打开安装包狂点下一步即可安装好 VSCode。 接着在插件市场中安装好 Remote-SSH 插件。 接着就可以配置 SSH 远程连接了: 点击左侧 remote-explorer 图标,点击右侧加号:  在弹出的输入框中,输入 `用户名@IP地址`,点击回车。  接着,选择第一个配置文件,点击回车。  接着,左侧的清单中就会出现我们配置的 10.0.0.89,点击右侧有个加号的文件图标:  弹出新的 VSCode 窗口,我们点击 File -> Open Folder,然后选择我们的源码路径即可:  打开的过程中,需要我们输入 Ubuntu 的登录密码。我们也可以通过配置,实现免密登录的效果: 打开 win 上的 PowerShell: ```bash # 生成公钥 ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub ``` 将公钥文件的内容拷贝到 ubuntu 的` ~/.ssh/authorized_keys` 中 - ubuntu 重启 ssh 服务 - bash 代码解读复制代码sudo systemctl restart ssh ### 7. adb 最后,我们在介绍 adb 的两个常用功能 - adb push:将开发机上的文件上传到 Android 机器上 ```bash touch testfile # 一些临时文件 adb push ./testfile /data/local/tmp ``` - adb shell:用于进入 Android 的 shell 终端 
嘿手大叔
2025年1月3日 16:53
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码