1. 程式人生 > >Android系統編譯及單模組編譯簡介

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/

整個安裝流程截圖: