網(wǎng)站制作NEWS
寫(xiě)給應(yīng)用開(kāi)發(fā)的 Android Framework 教程——玩轉(zhuǎn)AOSP篇之添加 Product
在Android應(yīng)用開(kāi)發(fā)中,我們通常需要根據(jù)不同的應(yīng)用市場(chǎng)打包出不同的apk文件,以滿足特定需求。同樣的原理,Android系統(tǒng)源碼通過(guò)配置文件實(shí)現(xiàn)“分包”,形成適用于不同硬件產(chǎn)品的系統(tǒng)鏡像。這些配置文件統(tǒng)稱為“Product”。每個(gè)Product適用于特定硬件產(chǎn)品,例如小米的12s系列、12s pro和12s ultra均基于驍龍8+平臺(tái)。
AOSP預(yù)置了多種Product,例如用于x86_64模擬器的aosp_x86_64-eng。Product配置文件主要保存在board和product目錄下。執(zhí)行l(wèi)unch命令時(shí),可以選擇對(duì)應(yīng)的Product。例如選擇aosp_x86_64-eng,關(guān)注的關(guān)鍵配置文件包括BoardConfig.mk、AndroidProducts.mk、PRODUCT_MAKEFILES和COMMON_LUNCH_CHOICES。
BoardConfig.mk定義了與硬件相關(guān)的底層特性,例如CPU位數(shù)、bootloader和kernel、攝像頭、GPS導(dǎo)航等。它包含了BoardConfigGsiCommon.mk和BoardConfigEmuCommon.mk兩個(gè)配置文件,分別用于通用系統(tǒng)映像和模擬器配置。這些文件主要與硬件相關(guān),通常很少需要修改。
AndroidProducts.mk定義了執(zhí)行l(wèi)unch命令時(shí)的選項(xiàng)及其對(duì)應(yīng)的配置文件。PRODUCT_MAKEFILES引入產(chǎn)品的配置文件,而COMMON_LUNCH_CHOICES添加了產(chǎn)品名+構(gòu)建模式的選項(xiàng)。aosp_x86_64.mk作為產(chǎn)品配置的主要文件,通過(guò)inherit-product函數(shù)繼承其他文件,并可以使用“-include”來(lái)忽略包含文件時(shí)的錯(cuò)誤提示。
Product配置文件中的變量分為通用變量、路徑變量和自定義變量。自定義變量由開(kāi)發(fā)者根據(jù)需要定義,如功能變量,表示該變量具有特殊功能。
若要添加自定義Product,例如名為“Jelly”的公司開(kāi)發(fā)的“Rice14”手機(jī)對(duì)標(biāo)蘋(píng)果14,需要在源碼中創(chuàng)建相應(yīng)的目錄和文件。例如在device目錄下添加BoardConfig.mk和Rice14.mk文件,并從其他配置文件中復(fù)制并修改關(guān)鍵信息。AndroidProducts.mk文件中需添加新Product的配置。最后驗(yàn)證添加的Product是否成功。
本文提供了一個(gè)關(guān)于如何在Android系統(tǒng)源碼中添加自定義Product的簡(jiǎn)要示例,旨在幫助開(kāi)發(fā)者更深入地理解并實(shí)踐AndroidFramework與LinuxKernel的配置過(guò)程。了解Product配置有助于開(kāi)發(fā)者根據(jù)特定需求定制Android系統(tǒng),提升應(yīng)用兼容性和用戶體驗(yàn)。
多重隨機(jī)標(biāo)簽