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姐姐指導了一下,也順帶點撥了一下。主要還是精力沒有放在那上邊,導致做事情不夠好。做乙個事情不好,做其它事情也...