Android make指令碼簡記

2021-06-06 22:59:11 字數 3238 閱讀 4513

2.4 package.mk中定義的幾個package.***變數

packages.$(local_package_name).private_key := $(private_key)

packages.$(local_package_name).certificate := $(certificate)

packages.$(local_package_name).overrides := $(strip $(local_overrides_packages))

packages.$(local_package_name).resource_files := $(all_resources)

packages := $(packages) $(local_package_name)

全編譯時,packages變數將會記錄遍歷到的packages。

android make指令碼的簡記(2)

3. config.mk的分析

首先,包含pathmap.mk, 其次,定義了一些變數,例如通用的編譯引數,package的字尾名等。

隨後包含buildspec.mk。

接著包含envsetup.mk。

然後包含$(board_config_mk)。$(board_config_mk)是位於build/target/board /$(target_device)/,device/*/$(target_device)/,或vendor/*/$(target_device) /目錄下的boardconfig.mk檔案。

4. buildspec.mk的分析

buildspec.mk是使用者應當配置的指令碼檔案,模板可以使用buildspec.mk.default,放到$(top)下。

在 buildspec.mk中,使用者應該配置好主要的引數,例如 target_product, target_build_variant, custom_modules,  target_simulator, target_build_type, custom_locales,和build_env_sequence_number等。

如果不使用buildspec.mk配置引數,也可以使用環境變數的形式。若不配置引數,那麼android會使用預設的引數。

9. node_fns.mk的分析

定義了一些命令。這些命令在product.mk,device.mk,和product_config.mk中會使用。這裡重點說明import-nodes。

import-nodes需要3個入口引數:

$(1)是乙個字串,是輸出變數的主幹名。例如」products"和」devices「。

$(2)是乙個makefile檔案列表,這些檔案中應該含有對$(3)中變數的定義。

$(3)是乙個變數列表。

import- nodes會建立這樣形式的變數,以$(1)="products",$(2)中含有"build/target/product/core.mk", $(3)中含有"product_name", 而且core.mk中定義了product_name:=core為例,

product.build/target/product/core.mk.product_name:=core

import- nodes中還考慮了inherit的問題,如果某個products.***變數的值中有『@inherit:

android make指令碼的簡記(4)

android make指令碼的簡記(5)

1. makefile的分析

首先定義target, 用於生成$(out_docs)/index.html

再定義target, 用於生成$(target_root_out)/default.prop

再定義target,用於生成$(target_out)/build.prop。build.prop檔案記錄了一系列屬性值。它的內容分成兩部分,第一部分是一些關於 product,device,build的一般性屬性值,第二部分的屬性值源自additional_build_properties。product配置mk檔案中定義的product_property_overrides會加入到 additional_build_properties,建議增加property時,直接修改 product_property_overrides。

再定義target, 用於生成$(product_out)/sdk/sdk-build.prop

再定義target,package-stats,用於生成$(product_out)/package-stats.txt,這個檔案包含了.jar,.apk字尾檔案的資訊。

再定義target,apkcerts-list,用於生成$(name)-apkcerts-$(file_name_tag),描述各module的certificate和private_key檔案資訊。

接著,如果定義了create_module_info_file,則生成$(product_out)/module-info.txt,其中包含了描述所有module的資訊。

再定義target,event-log-tags。

接著,處理ramdisk.img

再處理boot.img,如果target_no_kernel不是true,則將kernel和ramdisk.img組裝成boot.img。

接著,定影命令combine-notice-files,用於生成target,notice_files。notice_files會抽取生成相應的宣告檔案。

隨後,建立target,otacert,用於將.x509.pem字尾的認證檔案打包存放到$(target_out_etc)/security/otacerts.zip。

接著,建立target,recoveryimage,處理recovery img

還有下面的target,

systemimage-nodeps, snod

systemtarball-nodeps,stnod

boottarball-nodeps,btnod

userdataimage-nodeps

userdatatarball-nodeps

otatools

target-files-package

otapackage

installed-file-list

tests-zip-package

dalvikfiles

updatepackage

最後包含進 build/core/task/下的mk檔案。

Android Make指令碼的簡記 5

首先定義target,用於生成 out docs index.html 再定義target,用於生成 target root out default.prop 再定義target,用於生成 target out build.prop。build.prop檔案記錄了一系列屬性值。它的內容分成兩部分,第...

Android make的一些基本命令

1.make jxx xx表示數字,這個命令將編譯android系統並生成映象,xx表示可以使用到的cpu核數,這在配置好的電腦上特別有用,公司的16核ubuntu伺服器執行make j16只要不到20分鐘,而雙核pc上需要4個小時!2.make snod 這條命令將重新生成映象,消耗的時間很少,類...

最近事情簡記

最近看文章,做實驗,都有一種自己要慢慢主導自己,說服自己的感覺了。這個感覺有時挺要命的,尤其是我這個沒有太多主心骨的人。自己要給自己確認,給自己信心。收發郵件都是要注意措辭的,今天被maxin姐姐指導了一下,也順帶點撥了一下。主要還是精力沒有放在那上邊,導致做事情不夠好。做乙個事情不好,做其它事情也...