此文本面向希望添加新設備或更改現有設備配置的開發人員。這給出了涉及哪些文件的壹些指示。
== build/envsetup.sh ==
有些函數是通過調用
& ltpre & gt
。build/envsetup.sh
& lt/pre & gt;
在頂層目錄中。
壹些環境變量是通過調用
& ltpre & gt
午餐
& lt/pre & gt;
在頂層目錄中。
& ltpre & gt
出口目標產品=變型
導出TARGET_SIMULATOR=false
導出目標構建類型=發布
& lt/pre & gt;
在以下位置搜索vendorsetup.sh:
& ltpre & gt
供應商/ /vendorsetup.sh
vendor/ / /vendorsetup.sh
device/ /*/vendorsetup.sh
& lt/pre & gt;
== vendorsetup.sh ==
這個文件由build/envsetup.sh執行,可以使用任何東西
在envsetup.sh中定義。
特別是,您可以使用add_lunch_combo添加午餐選項
功能:
& ltpre & gt
add _ lunch _ combo full _ crespo-user debug
& lt/pre & gt;
宏TARGET_PRODUCT和TARGET_BUILD_VARIANT的值來自選項名:add _ lunch _ combo TARGET _ BUILD _ VARIANT
在上面的示例中,結果值是TARGET_PRODUCT=full_crespo和TARGET_BUILD_VARIANT=userdebug。
這些文件可以用作示例:
& ltpre & gt
找到。-名稱vendorsetup.sh
& lt/pre & gt;
& ltpre & gt
。/device/Samsung/crespo/vendor setup . sh
。/device/Samsung/crespo 4g/vendor setup . sh
。/device/HTC/passion/vendor setup . sh
& lt/pre & gt;
== Makefile ==
構建過程通過調用
& ltpre & gt
制造
& lt/pre & gt;
在頂層目錄中。
Makefile調用build/core/main.mk
== build/core/main.mk ==
根據配置和主機信息設置各種標準變量。
& ltpre & gt
包含$(BUILD_SYSTEM)/config.mk
& lt/pre & gt;
這允許我們在config.make之後強制壹個幹凈的構建
環境設置已經完成,但是在我們生成任何依賴項之前。這
文件內聯rm -rf,因此下面完成的dep將
正確生成
& ltpre & gt
包含$(BUILD_SYSTEM)/cleanbuild.mk
& lt/pre & gt;
這些修改器目標本身不做任何事情,但是
更改生成的行為。
(必須在包含定義之前定義。make)
& ltpre & gt
INTERNAL _ MODIFIER _ TARGETS:= show commands check build all
& lt/pre & gt;
引入標準的構建系統定義。
& ltpre & gt
include $(BUILD _ SYSTEM)/definitions . MK
& lt/pre & gt;
== build/core/config.mk ==
各種映射,以避免到處都是硬編碼路徑
& ltpre & gt
include $(BUILD _ SYSTEM)/path map . MK
& lt/pre & gt;
嘗試包含buildspec.mk,它將嘗試設置東西。
如果這個文件不存在,環境變量會存在
如果這不起作用,那麽默認的是壹個
手臂構造
& ltpre & gt
-包含$(TOPDIR)buildspec.mk
& lt/pre & gt;
定義大多數全局變量。這些是
特定於用戶的構建配置。
& ltpre & gt
包含$(BUILD_SYSTEM)/envsetup.mk
& lt/pre & gt;
在中搜索BoardConfig.mk
(目標設備)/BoardConfig.mk
device/*/(目標設備)/BoardConfig.mk
並加載文件
& ltpre & gt
包括$(board_config_mk)
& lt/pre & gt;
& ltpre & gt
包含$(BUILD_SYSTEM)/dumpvar.mk
& lt/pre & gt;
== BoardConfig.mk ==
這些文件可以用作示例:
& ltpre & gt
找到。-名稱BoardConfig.mk
& lt/pre & gt;
& ltpre & gt
。/device/Samsung/crespo/board config . MK
。/device/Samsung/crespo 4g/board config . MK
。/device/HTC/passion/board config . MK
。/build/target/board/generic/board config . MK
。/build/target/board/generic _ x86/board config . MK
。/build/target/board/emulator/board config . MK
。/build/target/board/sim/board config . MK
& lt/pre & gt;
== build/buildspec.mk.default ==
這是壹個什麽都不做的模板文件。要使用它,請將其復制到文件中
在根目錄中命名為“buildspec.mk ”,並取消註釋或更改
所需配置所需的變量。文件
“buildspec.mk”不應簽入源代碼管理。
選擇要為之構建的產品。在產品目錄中查找
那工作。
目標產品
選擇要構建的變體。如果不選擇,默認為eng。
用戶是我們運送的東西。
Userdebug是這樣的,打開了幾個標誌
用於調試。
Eng有很多額外的開發工具。
目標_構建_變量
自定義模塊
目標模擬器
如果您願意,請將其設置為調試或發布。否則,它默認為
arm的發布和模擬器的調試。
目標_構建_類型
主機_構建_類型
調試模塊模塊名
目標工具前綴
主機_自定義_調試_CFLAGS
目標_自定義_調試_CFLAGS
自定義_區域設置
輸出方向
附加_構建_屬性
NO_FALLBACK_FONT
WEBCORE _儀器儀表
啟用_SVG
內部版本號
== build/envsetup.mk ==
設置版本信息。
& ltpre & gt
include $(BUILD _ SYSTEM)/version _ defaults . MK
& lt/pre & gt;
如果您更新構建系統,使環境設置
或者buildspec.mk需要更新,增加這個數字,然後
還沒有重新運行這些程序的人必須在
可以建造。請確保也更新中的相應值
buildspec.mk.default和envsetup.sh。
& ltpre & gt
CORRECT _ BUILD _ ENV _ SEQUENCE _ NUMBER:= 10
& lt/pre & gt;
& ltpre & gt
包含$(BUILD _ SYSTEM)/product _ config . MK
& lt/pre & gt;
目標產品:sim卡已滿
TARGET_BUILD_VARIANT:工程用戶用戶調試測試
= = build/core/version _ defaults . MK = =
處理各種內部版本信息。
保證定義了以下內容:
平臺_版本
平臺_ SDK _版本
平臺版本代碼名稱
默認應用目標軟件開發套件
內部版本號
內部版本號
查找可選文件(BUILD_SYSTEM)/build_id.mk
& lt/pre & gt;
== build/core/build_id.mk ==
BUILD_ID通常用於指定分支名稱
內部版本號
顯示_構建_編號
== build/product_config.mk ==
提供“產品-& lt;prodname & gt-& lt;目標>目標,它允許您構建
無需設置環境的特定配置。
& ltpre & gt
目標產品:=(產品目標))
TARGET_BUILD_VARIANT :=(產品目標))
& lt/pre & gt;
提供“APP-& lt;appname >;"目標,它允許您構建
未捆綁的應用程序。
包括產品定義。
我們需要這樣做來將TARGET_PRODUCT轉換成它的
在我們開始定義任何規則之前。
產品_設備在產品文件(目標_產品)中定義。在產品make文件$( PRODUCT _ MAKEFILES)列表中搜索mk。
在AndroidProducts.mk文件中設置PRODUCT_MAKEFILES。
& ltpre & gt
(調用get-product-makefiles,
$(SRC _ TARGET _ DIR)/product/Android products . MK))
& lt/pre & gt;
將“更快”這樣的短名稱轉換為產品路徑
定義該產品的文件。
& ltpre & gt
內部產品:=(目標產品))
& lt/pre & gt;
& ltpre & gt
目標設備:=(內部產品)。產品_設備)
PRODUCT_LOCALES :=(產品。$(內部產品)。產品_區域設置))
產品_品牌
產品_型號
產品_制造商
& lt/pre & gt;
& ltpre & gt
產品_ OTA _公共密鑰
& lt/pre & gt;
== AndroidProducts.mk ==
該文件應該將PRODUCT_MAKEFILES設置為產品生成文件的列表
向生成系統公開。LOCAL_DIR已經被設置為
包含該文件的目錄。
該文件可能不依賴於除
本地目錄;不要使用任何條件句,也不要查找
任何未在此文件或
它包括。
文件設備/Samsung/crespo/Android products . MK
& ltpre & gt
PRODUCT_MAKEFILES :=
$(LOCAL_DIR)/full_crespo.mk
& lt/pre & gt;
這些文件可以用作示例:
& ltpre & gt
找到。-名稱AndroidProducts.mk
& lt/pre & gt;
& ltpre & gt
。/device/sample/products/Android products . MK
。/device/Samsung/crespo/Android products . MK
。/device/Samsung/crespo 4g/Android products . MK
。/device/HTC/passion/Android products . MK
。/build/target/product/Android products . MK
& lt/pre & gt;
返回所有AndroidProducts.mk文件列表的命令在build/core/product.mk中定義:
& ltpre & gt
定義_查找-Android-產品-文件
(殼牌測試-d供應商& amp& amp查找供應商-max depth 6-name androidproducts . MK)
$(SRC _ TARGET _ DIR)/product/Android products . MK
endef
& lt/pre & gt;
==產品文件==
搜索可用作示例的文件:
& ltpre & gt
grep -R產品_設備設備版本
& lt/pre & gt;
& ltpre & gt
DEVICE/Samsung/crespo/full _ crespo . MK:PRODUCT _ DEVICE:= crespo
DEVICE/Samsung/crespo 4g/full _ crespo 4g . MK:PRODUCT _ DEVICE:= crespo 4g
DEVICE/HTC/passion/full _ passion . MK:產品_設備:= passion
構建/目標/產品/sdk.mk:產品_設備:=通用
構建/目標/產品/通用. mk:產品_設備:=通用
build/target/PRODUCT/generic _ x86 . MK:PRODUCT _ DEVICE:= generic _ x86
構建/目標/產品/核心. mk:產品_設備:=通用
build/target/PRODUCT/full _ x86 . MK:產品_設備:= generic_x86
build/target/PRODUCT/full . MK:PRODUCT _ DEVICE:=泛型
構建/目標/產品/sim.mk:產品_設備:= sim
& lt/pre & gt;
這些文件中使用了產品設備
& ltpre & gt
build/core/product.mk:產品_設備
build/core/PRODUCT _ config . MK:TARGET _ DEVICE:=(內部產品)。產品_設備)
& lt/pre & gt;
==添加新設備==
為mycompany公司的新設備mydevice添加配置文件。
創建AndroidProducts.mk
& ltpre & gt
mkdir -p設備/我的公司/我的設備
nano device/my company/my device/Android products . MK
& lt/pre & gt;
& ltpre & gt
PRODUCT_MAKEFILES :=
$(LOCAL_DIR)/full_mydevice.mk
& lt/pre & gt;
創建文件full_mydevice.mk
例如build/target/product/full.mk
& ltpre & gt
nano device/my company/my device/full _ my device . MK
& lt/pre & gt;
& ltpre & gt
(SRC _ TARGET _ DIR)/product/full _ base . MK)
(SRC _目標_目錄)/board/generic/device.mk)
產品名稱:=完整我的設備
產品設備:=我的設備
產品_品牌:=安卓
PRODUCT _ MODEL:= my device上的完整Android
& lt/pre & gt;
創建文件vendorsetup.sh
& ltpre & gt
nano device/my company/my device/vendorsetup . sh
& lt/pre & gt;
& ltpre & gt
add _ lunch _ combo full _ my device-eng
& lt/pre & gt;
創建文件BoardConfig.mk
例子有
build/target/board/generic/board config . MK
設備/三星/crespo/BoardConfig.mk
device/Samsung/crespo/boardconfigcommon . MK
& ltpre & gt
mkdir -p設備/我的公司/我的設備
nano device/my company/my device/board config . MK
& lt/pre & gt;
& ltpre & gt
TARGET_NO_BOOTLOADER := true
目標_無_內核:=真
目標_CPU_ABI := armeabi
HAVE_HTC_AUDIO_DRIVER := true
BOARD_USES_GENERIC_AUDIO := true
使用_相機_存根:=真
TARGET_SHELL := mksh
TARGET _ ARCH _ VARIANT:= arm V7-a-neon
ARCH _ ARM _ HAVE _ TLS _ REGISTER:= true
& lt/pre & gt;
為我的設備配置Android
& ltpre & gt
。build/envsetup.sh
& lt/pre & gt;
& ltpre & gt
包括device/HTC/passion/vendor setup . sh
包括設備/my company/my device/vendor setup . sh
包括device/Samsung/crespo 4g/vendor setup . sh
包括device/Samsung/crespo/vendor setup . sh
& lt/pre & gt;
& ltpre & gt
午餐
& lt/pre & gt;
& ltpre & gt
您正在構建Linux
午餐菜單...選擇壹個組合:
1.全引擎
2.full_x86-eng
3.模擬器
4.full _ passion-用戶調試
5.完整_我的設備-工程
6.full_crespo4g-userdebug
7.full_crespo-userdebug
妳想要哪個?[全英] 5
============================================
平臺版本代號=AOSP
平臺版本=AOSP
目標產品=完整設備
目標_構建_變量=工程
目標模擬器=假
目標_構建_類型=發布
目標構建應用程序=
TARGET_ARCH=arm
TARGET _ ARCH _ VARIANT = arm V7-a-neon
HOST_ARCH=x86
HOST_OS=linux
主機構建類型=發布
BUILD_ID=OPENMASTER
============================================
& lt/pre & gt;
為我的設備構建Android
& ltpre & gt
品牌-j4
& lt/pre & gt;
& ltpre & gt
組合通知文件:out/target/product/my device/obj/NOTICE . html
目標系統fs映像:out/target/product/my device/obj/PACKAGING/system image _ intermediates/system . img
安裝系統fs映像:out/target/product/my device/system . img
已安裝文件列表:out/target/product/my device/installed-files . txt
& lt/pre & gt;
[[類別:安卓]]