Android系統編譯及單模組編譯簡介
前言
本文的介紹是基於有一套Android系統原始碼供你玩耍之上的,主要介紹Android系統的編譯流程及系統app的模組化編譯。我的原始碼是放在Linux伺服器上的,如果你對Linux常用命令感興趣可以看一下Linux常用命令。
系統編譯流程
1. 檢查jdk版本(java -version)
這一步並非必須,根據自身的實際情況決定,對於部分系統的編譯需要用到特定的jdk版本,否則編譯會失敗,
會報如下錯誤:
2. source build/envsetup.sh
利用cd命令切換到android原始碼的目錄下,也就是擁有下圖資料夾的目錄,執行 source build/envsetup.sh命令。
3. make clean
make clean命令是用來清除前一次編譯結果的,所以這一步是非必須的,這一步應該執行在lunch之前,
因為lunch之後會生成一個out資料夾,而make clean會刪除該資料夾。
4. lunch
系統原始碼可以編譯生成不同版本的系統,lunch過後如下圖,然後選擇對應的版本。
5. make update-api -j30
用來更新系統api的,非必須執行,-j30用來指定編譯的執行緒數,根據自己的硬體的效能來決定。
6. make -j30>makelog01.log 2>&1
編譯系統,並將編譯log輸出到log檔案中,如果不需要儲存log資訊可以直接使用make -j30進行編譯。
然後漫長的等待。。。
在編譯完成後在android目錄out目錄下,儲存著編譯生成的各種檔案。
7. 利用自己的打包指令碼,將編譯生成的檔案打包然後燒進手機,至此係統編譯已經完成。
單模組編譯
注意:單模組編譯需要在系統編譯成功一次後才能順利進行的,在系統沒有編譯前或者執行了make clean之後,單模組編譯是不能成功的!
如果你在編譯系統後退出過編譯的終端或關閉過編譯裝置,在進行單模組前你需要重新執行系統編譯的1,2,4步驟,然後就可以進行單模組編譯了。
如:編譯Calculator這個app
先切到Bluetooth工程目錄下:cd packages/apps/Calculator/
然後在該資料夾下執行 mm,進行編譯,成功的話會在下面顯示出一個apk的存放路徑,如下圖:
編譯成功後就需要把apk執行到手機上看效果了,因為編譯的是系統級的應用,安裝過程和第三方的應用有些不一樣,在終端需要執行如下操作:
1. adb devices :檢測手機是否連線上;
2. adb root :獲取root許可權;
3. adb renount:獲取手機system分割槽的讀寫許可權;
4. adb push 你的apk存放路徑 /system/app/
注意:你編譯的apk可能是經過定製的,編譯生成的apk是存放在 xxxx/system/priv-app/apk名,這時候上面4步驟如下:adb push 你的apk存放路徑 /system/priv-app/
整個安裝流程截圖: