Android系统编译
Android系統編譯
先執行環境初始化:
source build/envsetup.sh && lunch aosp-eng再執行make 模塊名,模塊根據需求自選,例如:
make services
特別注意:
1、framework.jar,編譯framework.jar要加-minux-apex,以前的make framework 不能編譯出framework.jar,make framework-minus-apex;
2、so模塊需要加上路徑編譯,直接make 會報依賴錯誤,需要指定位置編譯:make out/target/product/ohosqssi/system/lib/libandroid_runtime.so
編譯命令說明
source build/envsetup.sh 引入了 build/envsetup.sh 腳本,該腳本的作用是初始化編譯環境,并引入一些輔助的Shell函數,這其中就包括第二步使用 lunch 函數。
命令lunch aosp-eng是調用 lunch 函數,并指定參數為”aosp-eng”。lunch 函數的參數用來指定此次編譯的目標設備以及編譯類型。在這里,這兩個值分別是”aosp”和”eng”。”aosp”是 Android 源碼中已經定義好的一種產品,是為模擬器而設置的。而編譯類型會影響最終系統中包含的模塊。如果在調用lunch函數的時候沒有指定參數,那么該函數將輸出列表以供選擇,列表內容不同Android版本,不同廠家的基線源碼會有所不同。
如何理解lunch和choosecombo
lunch執行已經設定好的腳本,而choosecombo則是一個選項一個選項的執行:
To select the set of things you want to build, and what items to build for, you use either the ‘choosecombo’ function or the ‘lunch’ function. ‘choosecombo’ will walk you through the different items you have to select, one-by-one, while ‘lunch’ allows you select some pre-set combinations.
參考鏈接:
https://blog.csdn.net/tkwxty/article/details/111684291
https://blog.csdn.net/daoshuti/article/details/101842404
https://elinux.org/Android_Build_System
總結
以上是生活随笔為你收集整理的Android系统编译的全部內容,希望文章能夠幫你解決所遇到的問題。