android的m mm mmm編譯命令的使用

2021-09-25 07:53:56 字數 2392 閱讀 5323

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...