實際開發中,並不需要每次都編譯所有源**,只需要編譯自己修改的模組即可。
android
的編譯系統提供了強大的機制支援單獨模組的編譯,而且十分簡單。
android
提供三種方式用於編譯單獨模組: 1.
make
模組名這種方法適合第一次編譯,會把依賴模組一併編譯。它需要在全部源**中找到編譯模組的
android.mk
檔案,並檢查依賴模組是否有修改,因此編譯時間較長。使用這種方法,我們只需要搜尋原始碼目錄下的
android.mk
檔案,找到模組名,然後指定給
make
即可。 (1
)編譯應用層原始碼
對於應用層程式,需要檢視
android.mk
檔案的local_package_name
變數。
例如,要編譯
phone
應用程式的原始碼,先檢視
phone
的android.mk
檔案,在終端中執行以下命令:
顯示android.mk
的內容如下: ……
(省略部分內容)
local_path:= $(call my-dir)
include $(clear_vars)
local_module := com.android.phone.common ……
(省略部分內容)
local_package_name
:= phone ……
(省略部分內容) 找到
local_package_name
字段,其值便是我們需要得到的編譯引數,即
phone
。得到編譯引數後,在終端中執行如下命令便可單獨編譯
phone
模組及其依賴模組:
$make phone (
2)編譯框架層和系統執行庫原始碼
對於框架層和系統執行庫,需要檢視
local_module
變數。
以frameworks
包中的原始碼為例,在終端中執行以下命令:
$ find frameworks -name android.mk
該命令將搜尋
frameworks
目錄下所有的
android.mk
檔案,列表如下:
frameworks/media/libvideoeditor/lvpp/android.mk
frameworks/media/libvideoeditor/osal/src/android.mk
……(省略其他部分) 以
為例,在終端中執行以下命令:
顯示android.mk
的內容如下:
local_path:= $(call my-dir)
include $(clear_vars)
local_module
include $(build_executable)
local_module
變數的值便是我們要找的模組名。在終端中執行以下命令:
2.mmm
命令用於在原始碼根目錄編譯指定模組,引數為模組的相對路徑。只能在第一次編譯後使用。比如要編譯
phone
部分原始碼,需要在終端中執行以下命令:
3.mm
命令用於在模組根目錄編譯這個模組。只能在第一次編譯後使用。例如要編譯
phone
部分原始碼,需要在終端中執行以下命令:
$mm 注:
mmm和
mm命令必須在執行「
.build/envsetup.sh
」之後才能使用,並且只編譯發生變化的檔案。如果要編譯模組的所有檔案,需要
-b選項,例如
mm -b
。
Debian編譯Android原始碼
筆記本 intel i3 ram 4g linux debian 8.1.0 amd64 xfce cd 1.iso android 4.2.2android官方推薦使用ubuntu編譯原始碼,但我試了ubuntu 12.04 ubuntu 14.04,結果都在安裝好所需檔案重啟電腦後,系統就出莫名...
ubuntu編譯android原始碼
1.首先為安裝ubuntu系統,大家可以參考以下鏈結 建議大家把 根目錄分70g以上 3.安裝編譯必備的工具 清華大學映象庫 5.編譯過程 6.用到的命令 卡住不動 ctrl z 清除make資訊 make clobber 開始編譯 build envsetup.sh 選擇版本 lunch 開始編譯...
Android原始碼編譯(1)
sudo apt get install 這一步需要的庫,廠商一般都會提供出來。如果有些庫不能安裝,嘗試sudo apt get update 再sudo apt get upgrade,再進行預安裝庫。sudo apt get install openjdk x jre sudo apt get ...