1,下載源碼
使用清華源下載
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
注意代碼要放在大小寫敏感的磁盤中。
2,編譯aosp
進入aosp源碼目錄,執行:
source ./build/envsetup.sh
lunch
source命令是在當前bash環境下讀取并執行FileName中的命令。該filename文件可以無"執行權限",通常我們用“.”來代替。與./filename來執行相比,source是在當前shell進程中執行fliename中的命令,而不是打開一個子shell進程。所以該命令常用于環境初始化。
執行以上命令,會顯示可供編譯的版本。當然也可以不執行lunch,直接指定編譯版本。我這里使用:
lunch?pixel3_mainline-userdebug
這一步會有些耗時,完成后就可以正式編譯了:
make -jN
N是可選數字,用于多線程編譯。如果你的CPU是4核8線程,可以用make -8
遇到的坑
1,too many open files報錯
請見http://www.lxweimin.com/p/a31fefb67a40
2,OOM報錯
目前主線的aosp編譯需要至少16g內存,如果是8g內存就會有這個報錯。可以通過修改jvm配置和多次編譯來規避,但最一勞永逸的辦法還是升級內存
3,刷機環境配置
安裝android開發工具包:
brew cask install android-platform-tools
配置環境:
cd ~
touch .bash_profile
open .bash_profile
在里邊輸入:
PATH=${PATH}:/(platform-tools的文件夾路徑)
然后保存退出
安裝完之后,就可以在任意目錄使用adb和fastboot了
4,刷機
參考http://bbs.gfan.com/android-9204187-1-1.html?
解鎖bootloader
首先需要刷入Twrp及Root,參考網頁:
https://www.xzymoe.com/pixel-3xl-unlockbl-root/
正式刷機
首先要設置編譯的目錄,這個要根據自己的目錄情況設置:
export ANDROID_PRODUCT_OUT=/Volumes/android/aosp/out/target/product/pixel3_mainline
然后進行刷機,fastboot需要用root權限執行:
adb reboot bootloader
//解鎖(如已經解鎖就沒必要了)
fastboot oem unlock oem
fastboot flashall -w
燒寫完成后,執行:
fastboot reboot
單獨的刷機命令如下:
//進入recovery模式
# adb reboot bootloader
# fastboot flash system system.img
# fastboot flash persist persist.img
# fastboot flash cache cache.img
# fastboot flash userdata userdata.img
# fastboot flash boot boot.img
# fastboot flash recovery recovery.img
# fastboot reboot
原版ROM下載
https://developers.google.cn/android/drivers#sailfishnde63p
Gapps 安裝
編譯出來的 aosp 默認沒有 google 全家桶,可以通過以下方式進行安裝:
1,在 https://opengapps.org/ 根據系統版本、芯片類型選擇需要的 Gapps 全家桶,可以選 stock 版本
2,下載后把全家桶 push 到手機 sdcard(不用解壓)
3,在 https://twrp.me/devices/ 搜索你的設備,如: https://twrp.me/google/googlepixel2.html
4,下載 twrp.img 后根據截圖中的命令,把 twrp 加載到手機, 選擇 install 刷入 twrp.zip (這是一個 recovery 版本),重啟后,通過 adb reboot recovery 進入 twrp 的recovery 系統
5,在手機上選擇 install, 選擇步驟2中 push 到手機 sdcard 的全家桶,安裝結束后選擇擦除 dalvik cache 和 cache,重啟即可
源碼導入AS及調試
$ mmm development/tools/idegen/
$ sh ./development/tools/idegen/idegen.sh
第一行是,生成IDE工具文件,運行完將生成idegen.jar文件
第二行是,生成Android Studio配置文件,主要是生成android.iws, android.ipr, android.iml,這三個文件是Android?
Studio項目的關鍵文件,主要就是列出項目由模塊組成,依賴關系,目錄結構。
然后打開Android Studio,File->Open->工程根目錄android.ipr,Android會自動導入工程所有代碼,進行index