教程使用 Ubuntu2204 + Aosp14 环境进行学习。
# 使用 VMware 虚拟机安装 Ubuntu 2204
VMware 虚拟机安装 Ubuntu 2204,这部分内容可以参考AOSP 极速上手 (opens new window)
将镜像文件更换为 Ubuntu2204 的即可
# AOSP Android14 下载
# 下载
repo init https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-14.0.0_r15
repo sync
1
2
3
2
3
# 模拟器方案
# 编译
source build/envsetup.sh
lunch aosp_cf_x86_64_phone-eng
m
1
2
3
4
2
3
4
Cuttlefish 模拟器安装与启动:
安装 CuttleFish 所需的依赖:
sudo apt install -y git devscripts config-package-dev debhelper-compat golang curl
git clone https://github.com/google/android-cuttlefish
cd android-cuttlefish
for dir in base frontend; do
cd $dir
debuild -i -us -uc -b -d
cd ..
done
sudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -f
sudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -f
sudo usermod -aG kvm,cvdnetwork,render $USER
sudo reboot
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
启动模拟器:
launch_cvd --start_webrtc=true
1
浏览器中输入 https://localhost:8443
即可使用虚拟机了
# AOSP + Pixel 手机方案
我这里是 pixel6 手机,其他 pixel 手机也大体类似。
打开 https://source.android.com/docs/setup/reference/build-numbers 这个链接,注意右上角调整为英文,不然显示的信息不全。
在网页中找到我们下载的版本信息 android-14.0.0_r15
.
记录好最前面的这一串字符 UP1A.231105.003.A1
接着打开链接 https://developers.google.cn/android/drivers?hl=zh-cn
,在网页中搜索 UP1A.231105.003.A1
:
找到 pixel6:
点解 link 下载(需要梯子)。
下载完解压以后,会有 shell 脚本文件,我们把脚本文件放到系统源码根目录下执行即可。
接着就可以开始编译系统了
source build/envsetup.sh
lunch aosp_oriole-eng
m
1
2
3
2
3
编译完成后就可以刷机了
将手机与电脑通过 USB 线连接好。接着进行如下操作
解锁,已经解锁过的,直接跳过:
adb reboot bootloader
fastboot flashing unlock
# 这个时候手机上会有选项,根据说明按下音量键切换到允许unlock,再按电源键确认即可。
1
2
3
2
3
fastboot flashall -w
# -w会清除data分区,如果不想的话也可以不加-w选项
1
2
2
调试
修改了代码,我们可以把生成的产物直接 push 上去。
不过需要先执行:
adb root
adb remount
# adb reboot
1
2
3
2
3
比如,修改了 Launcher 的源码,
source build/envsetup.sh
# lunch aosp_oriole-userdebug
lunch aosp_oriole-eng
make Launcher3
1
2
3
4
2
3
4
adb root
adb remount
#adb reboot
// 在测试时发现已经被安装的apk重启后不会再扫描,需要删除data下的文件才可以,所以我直接install apk验证了。
// 当然其他文件,比如so库,jar包,xml文件等还是可以push验证的。
// adb push out/target/product/redfin/system_ext/priv-app/Launcher3/ /system_ext/priv-app/
adb install -r out/target/product/redfin/system_ext/priv-app/Launcher3/Launcher3.apk
// 此时Launcher会重启,可以看到我们添加的日志打印出来了。
07-26 22:08:53.441 5855 5855 D zzh : Launcher3 Start...
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Framework 修改:
adb push framework.jar /system/framework/
1
SystemUI 修改
adb push SystemUI.apk /system_ext/priv-app/SystemUI
```·
userdebug 版本无法 debug 处理:
```bash
adb shell setprop persist.debug.dalvik.vm.jdwp.enabled 1
adb reboot
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9