一. SSH服务
1.1 Linux安装服务端
SSH服务常见在其他平台通过SSH客户端访问远程或本地虚拟机的Linux服务器,通过vscode非常方便编辑远程源码,然后在远程编译不消耗本地算力资源,在编译AOSP教程中windows下vscode与虚拟机的连接,windows需要安装SSH客户端,Linux需要服务端,
# Linux安装SSH服务器端
sudo apt install openssh-server
# 设置开机自启动
sudo systemctl enable ssh
# 重启SSH服务器端
sudo systemctl restart ssh
# 固定IP地址避免自动分配变化
sudo apt install net-tools -y
# 定位到net目录下 找到文件01-network-manger-all.yaml
cd /etc/netplan
# vim编辑配置文件 注意addresses、gateway4、nameservers(DNS)
netplan sudo vim 01-network-manger-all.yaml
# 应用修改
netplan sudo netplan apply
1.2 Windows安装客户端
到官网安装teddy,启动后设置——配置与连接——新配置——SSH连接——填入虚拟机IP、用户名——设置密码——保存——点击三角形启动
二. VIM使用
# 安装Vim
sudo apt install vim
# 打开文件 进入一般模式
vim Android.bp
# 输入i进入编辑模式 输入Esc退出编辑模式回到一般模式 一般模式o进入编辑模式并换行
# /进入搜索模式 接着按Enter定位到匹配处 按n/N跳转上/下一个匹配处
# :进入命令行模式 :wq保存并退出 :q!放弃修改并退出
三. find + grep 命令
用于根据文件名找文件,或根据文本文件内容找文件
# 根据文件名找文件 如果该path目录过多搜索非常耗时
find . -name ""
# 根据文件名和文件内容查找文件
find . -name "Android.bp" | xargs grep "name: \".*recyclerview.*\""
四. Samba共享文件
Samba服务器用于Linux和windows共享文件。
# 安装Samba服务器
sudo apt install samba
# 配置Samba
sudo vom /ect/samba/smb.conf
# 设置密码
sudo smbpasswd -a zzh0838
# 开机自启动
sudo systemctl enable smbd
# 重启服务
sudo systemstl restart smbd
path为共享文件夹路径,browseable可搜索,writable可编辑,comment 注释。重启服务后在windows运行输入\\10.0.0.89(Linux IP)即可进入共享源码文件夹。
五. AIDEGen
AIDEGen(Android IDE Generator)是 AOSP 源码树中自带的一个命令行工具,它的核心作用是自动化配置 IDE项目文件,让你能像开发普通App一样,在Android Studio、IntelliJ 或CLion等IDE中流畅地开发AOSP 系统级代码(如 SystemUI、Settings 等)。
# 用AndroidStudio打开设置项目 此时AS解压后需要放在源码home/lesile/aosp/aosp_10/opt/目录
# 之前将 Android Studio 安装在了~/aosp/aosp_10/opt/android-studio,但 aidegen 默认只在 `/opt/android-*/bin`路径下查找
# aidegen + 模块名 + -i + s(指AndroidStudio)
aidegen Settings -i s
这里有个坑,无论我将AndroidStudio解压到以下哪个目录都无法识别:
home/lesile/aosp/aosp_10/opt/android-studio /home/lesile/opt/android-studio
,应该是aidegen死脑筋只认系统根目录/opt/android-studio,我们不想把AS放在系统根目录就只可以通过软连接映射我们的用户目录:
# 映射/opt/android-studio指向用户目录下的AndroidStudio
sudo ln -sf /home/lesile/opt/android-studio /opt/android-studio
# 验证软连接是否成功
ls -la /opt/
为什么要用AIDEgen?
核心问题:代码跳转
如果你直接打开 Settings文件夹,Android Studio 会把它当作一个孤立的App。当你点击 import android.*这类系统类时,IDE 会报错,因为它找不到这些类在哪里定义。
AIDEGen的作用:它其实是在帮你生成一个.iml文件,这个文件告诉 Android Studio:“这个模块依赖了 AOSP 源码里的哪些其他模块(如 frameworks/base)”。这样 IDE 才能建立索引,让你能点击跳转到系统源码。