mtk和高通是如何把自己的內容打包到系統鏡像中的

有人問我這樣一個問題,就是高通或者mtk是如何將自己的內容打包到system.img中的。接觸編譯比較少的,所以對這個還是陌生的,不過目前android的相關資料太詳實了,自己看文章和追蹤代碼過程記錄如下。文章首推“老羅Android之旅”,其中有4篇文章講解編譯系統的,這個是強烈推薦大家看的。

簡略的原理如下:各個模塊下都會有Android.mk文件,這個是編譯腳本的片段。在一次Android系統的完整編譯中,編譯腳本會搜索所有子目錄下的Android.mk,然後組合成一個完整的編譯腳本,這樣避免掉了文件間編譯依賴衝突或循環的問題。要想將一個模塊編譯到system.img中,一定要有腳本將模塊加入到PRODUCT_PACKAGES變量中,這個是唯一的條件。PRODUCT_PACKAGES不只是app哦,framework或者bin等都是要加入到其中的。

mtk打包代碼分析

build/target/product/telephony.mk

PRODUCT_PACKAGES += \
    CarrierConfig \
    Dialer \
    CallLogBackup \
    rild

device/mediatek/common/device.mk

# MediaTek framework base modules
PRODUCT_PACKAGES += \
    mediatek-common \
    mediatek-framework \
    CustomPropInterface \
    mediatek-telephony-common 

build目錄下有諸多通用的腳本文件,不過在device的mediatek目錄下又有個common文件夾,有點重複...,除了這兩處,在項目的腳本里也可以配置。或者新寫個文件,include到編譯流程中。

高通打包代碼分析

分析完mtk,再看高通,在build或者device搜索會發現一無所獲,是高通更改了編譯流程?其實並不是
vendor/qcom/proprietary/common/config/device-vendor.mk

#Qc extended functionality of android telephony
QTI_TELEPHONY_FWK := qti-telephony-common
QTI_TELEPHONY_FWK += QtiTelephonyServicelibrary
...
PRODUCT_PACKAGES += $(QTI_TELEPHONY_FWK)
高通維護自己模塊的腳本只有一處,修改起來比較方便。


發佈了101 篇原創文章 · 獲贊 25 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章