首先介紹下背景知識。
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 不識別。