亞寵展、全球?qū)櫸锂a(chǎn)業(yè)風(fēng)向標(biāo)——亞洲寵物展覽會(huì)深度解析
1324
2025-03-31
理解概念
1、Product
在android源碼正式編譯之前選擇Product,使用lunch product-xxx,這一步操作理解為預(yù)先對(duì)要編譯的源碼進(jìn)行一系列的配置。在android-10的源碼中,將一個(gè)Product配置分成三個(gè)部分:
BoardConfig.mk: 芯片硬件相關(guān)配置,分區(qū)設(shè)置等
product.mk: 一個(gè)產(chǎn)品的軟件相關(guān)的配置,比如內(nèi)置哪些軟件模塊,由AndroidProducts.mk 中的PRODUCT_MAKEFILES指定
AndroidProducts.mk: 指定 product 配置,并把 product 添加到 lunch 選擇項(xiàng)中
2、組織結(jié)構(gòu)
Google為AOSP源碼內(nèi)置了Product配置,位于源碼的build/target目錄:
hinzer@ubuntu:target$ pwd /home/hinzer/source/android-10/build/target hinzer@ubuntu:target$ tree -L 1 . ├── board ├── OWNERS └── product 2 directories, 1 file
1
2
3
4
5
6
7
8
9
10
同時(shí)也允許第三方定制Product配置,在源碼device目錄下。待會(huì)自定義Product在這個(gè)目錄下:
hinzer@ubuntu:device$ tree mi mi # 公司名 └── pure # device名(我喜歡寫為Product,與product區(qū)分),一個(gè)device可對(duì)應(yīng)多個(gè)product ├── AndroidProducts.mk # 指定product配置,添加lunch選項(xiàng) ├── BoardConfig.mk # 硬件配置 boardconfig └── product01.mk # 軟件配置 product 1 directory, 3 files
1
2
3
4
5
6
7
8
自定義product
模仿aosp源碼的Product配置,就引用了build/target/board/generic_x86_64/BoardConfig.mk和build/target/board/generic_x86_64/BoardConfig.mk的配置。然后進(jìn)行自定義
1、創(chuàng)建device/[company]/[device]目錄
hinzer@ubuntu:android-10$ mkdir -p ./device/mi/pure
1
2、分別添加AndroidProducts.mk、product.mk、BoardConfig.mk配置文件
hinzer@ubuntu:pure$ ls AndroidProducts.mk BoardConfig.mk product01.mk # 1.添加 AndroidProducts.mk hinzer@ubuntu:pure$ cat AndroidProducts.mk PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/product01.mk # 指定 product COMMON_LUNCH_CHOICES := \ product01-eng # 添加lunch選項(xiàng) # 2.添加 BoardConfig.mk hinzer@ubuntu:pure$ cat BoardConfig.mk include $(SRC_TARGET_DIR)/board/generic_x86_64/BoardConfig.mk # 這里直接飲用 # 3.添加 product01.mk hinzer@ubuntu:pure$ cat product01.mk $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_x86_64.mk) PRODUCT_NAME := product01 # product名(與文件保持一致) PRODUCT_DEVICE := pure # device名,BoardConfig.mk相關(guān)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
3、lunch剛才創(chuàng)建的product,編譯
hinzer@ubuntu:android-10$ source ./build/envsetup.sh hinzer@ubuntu:android-10$ lunch product01-eng hinzer@ubuntu:android-10$ make -j4
1
2
3
4、驗(yàn)證
# 運(yùn)行虛擬機(jī) hinzer@ubuntu:android-10$ emulator # 查看手機(jī)version信息,編譯時(shí)間、產(chǎn)品名是否對(duì)應(yīng)
1
2
理論補(bǔ)充
1、build variants
aosp為build系統(tǒng)提供三種Product配置,文檔里叫做build variants,分別是:
eng : 對(duì)應(yīng)到工程版。編譯打包所有模塊。表示adbd處于ROOT狀態(tài),所有調(diào)試開關(guān)打開
userdebug : 對(duì)應(yīng)到用戶調(diào)試版。打開調(diào)試開關(guān),但并沒(méi)有放開ROOT權(quán)限
user : 對(duì)應(yīng)到用戶版。關(guān)閉調(diào)試開關(guān),關(guān)閉ROOT權(quán)限。最終發(fā)布到用戶手上的版本,通常都是user版。
參考資料
AOSP開發(fā)文檔 - 添加新設(shè)備
Android系統(tǒng)開發(fā)入門-2.添加product
Android
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。