1 環境准備
首先需要准備一台Linux服務器,筆者偏好CentOS,不過Google官方建議是Ubuntu;這里不具體列舉需要安裝的軟件。
2 源碼下載
2.1 repo工具
# mkdir ~/bin # PATH=~/bin:$PATH # curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo # chmod a+x ~/bin/repo
2.2 aosp下載
因為國內被牆的原因,通常會通過國內鏡像源的方式來下載(以11.0.0_r40版本為例)
2.2.1 直接下載
# repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r40 # repo sync -j64
2.2.2 基礎包下載
# wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # tar xf aosp-latest.tar # repo init -b android-11.0.0_r40 # repo sync -j64
3 編譯和運行
3.1 編譯
# cd aosp # source build/envsetup.sh # lunch aosp_car_x86_64-userdebug # m
3.2 運行
這里是在編譯的服務器上直接運行,筆者嘗試過在Windows上來運行,但是不成功
# cd aosp # source build/envsetup.sh # lunch aosp_car_x86_64-userdebug # emulator // 運行模擬器 # adb emu kill // 關閉模擬器
4 有用的信息
4.1 aosp版本號確認
# cat build/make/core/build_id.mk BUILD_ID=RQ3A.210805.001.A1
然后參考<AOSP源代碼標記>找到對應的buildid即可知道具體aosp版本號
4.2 Android Studio查看aosp源碼
首先通過如下命令生成AS工程文件android.iml和android.ipr
# cd aosp # source build/envsetup.sh # lunch aosp_car_x86_64-userdebug # mmm development/tools/idegen/ # development/tools/idegen/idegen.sh
由於aosp源碼量太大,可以通過修改android.iml中excludeFolder屬性來排除不關心的目錄(也可以在生成工程文件前通過修改development/tools/idegen/excluded-paths來實現)
最后通過AS打開android.ipr即可打開aosp工程來瀏覽源碼
參考:
<Android開發者Codelab>
<Tsinghua Android鏡像使用幫助>
<LineageOS Build for instantnoodle>
<使用Android Studio導入AOSP源碼的奇技淫巧>