Android系統固件定制方式


target_product.mk
Android系統在構建關於某種產品的固件時,一般會根據特定於該產品的具體target_product.mk來配置生成整個Android系統。
/target_product.mk配置文件位於:/path_to_android/device/vendor/目錄下,其中path_to_android表示Android系統的根目錄;vendor為具體的廠商名稱,例如,htc、moto、softwinner等。

target_product.mk的基本結構如下:

基本配置信息:

Android系統基本產品配置信息
特定廠商平台公共的配置信息
1
2
特定產品配置信息:

包括特定於某一個產品的配置信息
1
target_product.mk提供的能力
target_product.mk通過一系列的函數、變量來控制系統的構建過程,主要的變量和函數如下:

PRODUCT_PACKAGES:產品中包括的系統級APP,比如Launcher。

PRODUCT_COPY_FILES:需要拷貝到產品中的文件,格式:src_file:dst_file,其中,src_file、dst_file都為相對路徑,例如:

device/softwinner/t3-p1/etc/apns-conf.xml:system/etc/apns-conf.xml,表示將apns-conf.xml拷貝到目標系統system/etc目錄下。

PRODUCT_PROPERTY_OVERRIDES:覆蓋build.prop中的系統屬性信息。例如:

persist.sys.timezone=Asia/Shanghai配置系統的時區信息。

inherit-product:用於調用上級.mk配置信息,例如:

$(call inherit-product, build/target/product/full_base.mk),通過inherit-product,解析full_base.mk中的配置信息。

vendorsetup.sh
特定於某款具體的產品,一般會編寫一個target_product.mk文件用於控制Android系統的具體構成,然后,編寫vendorsetup.sh用於定義產品的型號。 一般會編寫兩條型號信息:eng、user。eng用於編譯出debug版本的系統,user用於編譯release版本的系統。例如:

add_lunch_combo t3_p1-eng
add_lunch_combo t3_p1-user
1
2
系統構建過程
Android系統的構建過程一般分為以下幾個:
(1)配置環境變量->(2)選定產品型號->(3)編譯->(4)打包。

配置環境變量: 通過如下命令:source build/envsetup.sh設置Android編譯時所需要的環境信息。其中,該腳本會掃描device目錄下的所有文件,並執行執行所有的vendorsetup.sh腳本。這樣,第2步,就可以看到所有的產品型號信息了。

選定產品型號:選定符合需求的產品型號,一般產品型號都是自定義的。

編譯:Android系統編譯:包括,BootLoader、kernel、rootfs、system.img等。

打包:將編譯階段生成的各個編譯產物打包成一個鏡像文件,以備系統燒錄。

產品定制
對於具體的產品,我們可以進行哪些定制工作?具體定制該如何開展呢?下面以基於全志T3平台的Android 6.0固件定制操作為例。
T3平台使用的Android6.0系統,該平台相關的產品配置信息位於:device/sofewinner/下:

common t3-common t3-p1 t3-p1_v1
1
其中,common包括了全志平台下一些通用的工具,例如pack、extract-bsp等;t3-common包括了t3處理器平台下的一些通用配置。
t3-p1、t3-p1_v1表示兩種產品型號。

下面舉一個替換系統默認輸入法的示例。

Android系統提供的默認輸入法不是很好用,所以需要將系統默認輸入法替換為Sogou輸入法。替換步驟如下:

找到系統輸入法對應的安裝位置:系統輸入法屬於Android系統級服務,其安裝位置一般位於:build/target/product中,系統輸入法的APP名稱為:LatinIME。通過grep -nr LatinIME,可以找到關於LatinIME相關的配置信息,把這些配置信息注釋掉。

將Sogou.apk放到t3-p1的apk目錄下,然后再t3-p1.mk中增加一條配置信息:

PRODUCT_COPY_FILES +=
device/softwinner/t3-p1/apk/sogou.apk:system/preinstall/sogou.apk

配置硬件鍵盤、Settings中關於輸入法的配置信息:

settings put secure show_ime_with_hard_keyboard 1
settings put secure enabled_input_methods com.sohu.inputmethod.sogou/.SogouIME

可以將上述信息編寫成一個腳本,保證系統啟動時,執行就可以了。至此,系統的默認輸入法就替換為了Sogou輸入法。

類似的,可以將系統中不需要的APP,例如Music、Camera、Browser、Recorder進行裁剪。
--------------------- 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM