android原始碼目錄下的build/envsetup.s**件,描述編譯的命令
要想使用這些命令,首先需要在android原始碼根目錄執行. build/envsetup.sh 指令碼設定環境
m:編譯所有的模組
mm:編譯當前目錄下的模組,當前目錄下要有android.mk檔案
mmm:編譯指定路徑下的模組,指定路徑下要有android.mk檔案
下面舉個例子說明,假設我要編譯android下的\hardware\libhardware_legacy\power模組,當前目錄為原始碼根目錄,方法如下:
1、. build/envsetup.sh
2、mmm hardware/libhardware_legacy/power/
或者 :
1、. build/envsetup.sh
2、cd hardware/libhardware_legacy/power/
3、mm
1.3.6 編譯指定模組原始碼
實際開發中,並不需要每次都編譯所有源**,只需要編譯自己修改的模組即可。android的編譯系統提供了強大的機制支援單獨模組的編譯,而且十分簡單。android提供三種方式用於編譯單獨模組:
make 模組名
mm 來自於envsetup.sh指令碼中註冊的函式
mmm來自於envsetup.sh指令碼中註冊的函式
下面將分別介紹這三種方法。
1.make 模組名
這種方法適合第一次編譯,會把依賴模組一併編譯。它需要在全部源**中找到編譯模組的android.mk檔案,並檢查依賴模組是否有修改,因此編譯時間較長。使用這種方法,我們只需要搜尋原始碼目錄下的android.mk檔案,找到模組名,然後指定給make即可。
(1)編譯應用層原始碼
對於應用層程式,需要檢視android.mk檔案的local_package_name變數。
例如,要編譯phone應用程式的原始碼,先檢視phone的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模組及其依賴模組:
allong@android:~/android/jellybean$make phone
(2)編譯框架層和系統執行庫原始碼
對於框架層和系統執行庫,需要檢視local_module變數。
以frameworks包中的原始碼為例,在終端中執行以下命令:
allong@android:~/android/jellybean$ find frameworks -name android.mk
該命令將搜尋frameworks目錄下所有的android.mk檔案,列表如下:
該命令是envsetup.sh中註冊的函式,用於在原始碼根目錄編譯指定模組,引數為模組的相對路徑。只能在第一次編譯後使用。比如要編譯phone部分原始碼,需要在終端中執行以下命令:
該命令也是envsetup.sh中註冊的函式,用於在模組根目錄編譯這個模組。只能在第一次編譯後使用。例如要編譯phone部分原始碼,需要在終端中執行以下命令:
allong@android:~/android/jellybeancdp
acka
ges/
apps
/pho
neal
long
@and
roid
:/an
droi
d/je
llyb
ean/
pack
ages
/app
s/ph
onecd
pack
ages
/app
s/ph
onea
llon
g@an
droi
d:/a
ndro
id/j
elly
bean
/pac
kage
s/ap
ps/p
hone
mm注意 mmm和mm命令必須在執行「.build/envsetup.sh」之後才能使用,並且只編譯發生變化的檔案。如果要編譯模組的所有檔案,需要-b選項,例如mm -b
注:單獨使用m 編譯的方法還沒有試過,有機會要試一下。
make 後接 local_module 或者 local_package_name
android的m mm mmm編譯命令的使用
android原始碼目錄下的build envsetup.sh檔案,描述編譯的命令 m makes from the top of the tree.mm builds all of the modules in the current directory.mmm builds all of the...
android的m mm mmm編譯命令的使用
android原始碼目錄下的build envsetup.sh檔案,描述編譯的命令 m makes from the top of the tree.mm builds all of the modules in the current directory.mmm builds all of the...
android的m mm mmm編譯命令的使用
android原始碼目錄下的build envsetup.sh檔案,描述編譯的命令 m makes from the top of the tree.mm builds all of the modules in the current directory.mmm builds all of the...