切換到源碼目錄下執行下面命令
1、初始化環境
. build/envsetup.sh
//清除緩存
make clobber
2、選擇編譯目標
lunch
AOSP 預制了很多 Product。這里為了簡單我們先不用真機,而是選擇模擬器的方式,對于 x86_64 模擬器,我們選擇的是 aosp_x86_64-eng。
lunch命令回車后會讓你選擇編譯目標,我們選31(aosp_x86_64-eng)
maoweiyi@maoweiyi-OMEN-by-HP-Laptop-15-dc0xxx:~/aosp$ lunchYou're building on LinuxLunch menu... pick a combo:1. aosp_arm-eng2. aosp_arm64-eng3. aosp_barbet-userdebug4. aosp_blueline-userdebug5. aosp_blueline_car-userdebug6. aosp_bonito-userdebug7. aosp_bonito_car-userdebug8. aosp_bramble-userdebug9. aosp_car_arm-userdebug10. aosp_car_arm64-userdebug11. aosp_car_x86-userdebug12. aosp_car_x86_64-userdebug13. aosp_cf_arm64_auto-userdebug14. aosp_cf_arm64_phone-userdebug15. aosp_cf_x86_64_phone-userdebug16. aosp_cf_x86_auto-userdebug17. aosp_cf_x86_phone-userdebug18. aosp_cf_x86_tv-userdebug19. aosp_coral-userdebug20. aosp_coral_car-userdebug21. aosp_crosshatch-userdebug22. aosp_crosshatch_car-userdebug23. aosp_flame-userdebug24. aosp_flame_car-userdebug25. aosp_redfin-userdebug26. aosp_sargo-userdebug27. aosp_sunfish-userdebug28. aosp_trout_arm64-userdebug29. aosp_trout_x86-userdebug30. aosp_x86-eng31. aosp_x86_64-eng32. arm_krait-eng33. arm_v7_v8-eng34. armv8-eng35. armv8_kryo385-eng36. beagle_x15-userdebug37. beagle_x15_auto-userdebug38. car_x86_64-userdebug39. db845c-userdebug40. fuchsia_arm64-eng41. fuchsia_x86_64-eng42. hikey-userdebug43. hikey64_only-userdebug44. hikey960-userdebug45. hikey960_tv-userdebug46. hikey_tv-userdebug47. pixel3_mainline-userdebug48. poplar-eng49. poplar-user50. poplar-userdebug51. qemu_trusty_arm64-userdebug52. silvermont-eng53. uml-userdebug54. yukawa-userdebug55. yukawa_sei510-userdebugWhich would you like? [aosp_arm-eng] 31
3、編譯
選擇好編譯目標,通過下面命令進行編譯
//通過-jN 參數來設置編譯的并行任務數,提高編譯速度
make -j4
2000 years later~
看到build completed successfully就代表我們構建成功了。
接下來運行模擬器
運行模擬器
emulator
因為我們是剛編譯, 執行過envsetup腳本和lunch,否則需要先執行這兩條命令
. build/envsetup.sh
lunch 31
emulator
備注:在啟動模擬器的時候遇到了磁盤空間不足,我看了下整個AOSP文件夾占用了我200多G,其中隱藏文件.repo占用了50G,考慮了下因為是學習后期不使用repo
sync同步更新代碼,所以就給刪除了。
到這里我們的模擬器就成功運行起來了
4、修改代碼運行
最后我們嘗試下修改我們的Activity.java,重新編譯看看有沒有生效。可以通過find -name "Activity.java"
命令找到我們的Activity.java
找到后給Activity.java的onCreate加一行日志打印。
修改后保存,重新編譯
. build/envsetup.sh
lunch 31
make -j4
編譯成功再次運行模擬器
. build/envsetup.sh
lunch 31
emulator
打開終端 通過adb shell
和 logcat
命令查看日志
adb shell 的配置可自行百度。
點擊模擬器中幾個app后日志結果日下
可以看到我們修改的代碼確實生效了。