首先介绍下背景知识。
aosp 仅是一套源码,不含厂家驱动。 CM安卓的厂家驱动是自行提取的。
一般的安卓手机分区,有 boot , system, user , Baseband 基带, recovery , cache 等。
Google Pixel XL 都需要哪些 驱动呢?
1, 厂家驱动二进制。
https://developers.google.com/android/drivers#marlinppr2.180905.006.a1
Pixel XL binaries for Android 9.0.0 (PPR2.180905.006.A1)
https://dl.google.com/dl/android/aosp/google_devices-marlin-ppr2.180905.006.a1-1090e880.tgz
2f93f49993f6ff4f2269b53ec913966236de44f07dbb41657505b0402e21d0dc
GPS, Audio, Camera, Gestures, Graphics, DRM, Video, Sensors
https://dl.google.com/dl/android/aosp/qcom-marlin-ppr2.180905.006.a1-d11de9e0.tgz
25c68bc68254c4426c280ed57499177973a69b9d843d5ca79c7fc918e6e0d1ba
出厂镜像
https://developers.google.com/android/images
https://dl.google.com/dl/android/aosp/marlin-ppr2.180905.006.a1-factory-a78fe264.zip
厂家二进制驱动提供 hal 层的 gps 照像 基带 什么的支持。
如何添加到 aosp 中一起编译?
下载上面的3个文件,并验证 sha。
然后解压得到2个 sh extract-google_devices-marlin.sh extract-qcom-marlin.sh
复制到 aosp 源码目录中,手动执行一下,安装好。
./extract-google_devices-marlin.sh
vendor/
vendor/google_devices/
vendor/google_devices/marlin/
vendor/google_devices/marlin/device-vendor-marlin.mk
vendor/google_devices/marlin/android-info.txt
vendor/google_devices/marlin/BoardConfigVendor.mk
vendor/google_devices/marlin/BoardConfigPartial.mk
vendor/google_devices/marlin/proprietary/
vendor/google_devices/marlin/proprietary/vendor.img
vendor/google_devices/marlin/device-partial.mk Files extracted successfully. 第2个 高通驱动
./extract-qcom-marlin.sh
vendor/
vendor/qcom/
vendor/qcom/marlin/
vendor/qcom/marlin/BoardConfigPartial.mk
vendor/qcom/marlin/proprietary/
vendor/qcom/marlin/proprietary/lib64/
vendor/qcom/marlin/proprietary/lib64/libbcc.so
vendor/qcom/marlin/proprietary/lib64/libLLVM_android.so
vendor/qcom/marlin/proprietary/lib64/libiperf.so
vendor/qcom/marlin/proprietary/lib64/libminui.so
vendor/qcom/marlin/proprietary/ATT_profiles.xml
vendor/qcom/marlin/proprietary/pktlogconf
vendor/qcom/marlin/proprietary/VZW_profiles.xml
vendor/qcom/marlin/proprietary/ROW_profiles.xml
vendor/qcom/marlin/proprietary/libclcore_neon.bc
vendor/qcom/marlin/proprietary/sanitizer-status
vendor/qcom/marlin/proprietary/libiperf.so
vendor/qcom/marlin/proprietary/qcrilhook.jar
vendor/qcom/marlin/proprietary/libminui.so
vendor/qcom/marlin/proprietary/libion.so
vendor/qcom/marlin/proprietary/iperf3
vendor/qcom/marlin/device-partial.mk
vendor/google_devices/
vendor/google_devices/marlin/
vendor/google_devices/marlin/device-vendor-marlin.mk
vendor/google_devices/marlin/android-info.txt
vendor/google_devices/marlin/BoardConfigVendor.mk Files extracted successfully.
重新执行 生成镜像命令 。
wildcard(vendor) was changed, regenerating...
wildcard(vendor) was changed, regenerating...
[ 21% 243/1111] including out/soong/Android-aosp_marlin.mk
因为之前用的 master 分支,需要手动切到安卓9上来,重新 lunch make 。
先使用出厂镜像来刷机
启用开发者模式,打开 USB 调试 adb shell 能进入
开机键 + 音量- 进入 bootloader 模式
电脑上能识别出来手机并装上了驱动
fastboot devices 能看到设备。
解压 marlin-ppr2.180905.006-factory-df8ec974.zip 里面有个 flash-all.bat 双击等几分钟,就刷好了。
刷入 自己编译的 AOSP 的安卓 img 。
为什么要先刷入出厂镜像呢?
因为你的手机买回来可能是 8.0 或 7.1 的 安卓版本,而最新的编译出来的是 9.0 的安卓。
在刷自己编译出来的 那几个 img 。
发现问题了,其它都正常,就是 SIM 不识别。