Android - 模塊添加與編譯


Android5.1 Ubuntu14.04

Android系統編譯依靠.mk文件

 

添加google服務

我們自己的ROM里沒有google服務

完整的google包里包含google框架和各種服務,我們可以選擇性安裝模塊

在google包里products目錄下,有一個 gms.mk 文件(或者自己起名字)

gms.mk管理着要安裝的各個模塊,找到關鍵字PRODUCT_PACKAGES

PRODUCT_PACKAGES后面跟着的就是要安裝的模塊

截取部分來看看:

PRODUCT_PACKAGES += \
     AndroidForWork \
     ConfigUpdater \
     GoogleBackupTransport \
     GoogleFeedback

一般會在device/corecompany/yourproductname/ 目錄中存放.mk文件

corecompany指代芯片廠家,比如高通,MTK

可能是 device.mk ,也可能是  yourproductname.mk ;這個文件會被Makefile找到

這個mk文件中會引用 gms.mk (或者自己起名字)

需要把 gms.mk的路徑寫對,編譯時會自動找到

1
$(call inherit-product- if -exists, vendor /google/products/intel_gms .mk)

本例中google包放在vendor目錄下

 

觀察 vendor/google/apps/GmsCore 里的 Android.mk 文件

LOCAL_PRIVILEGED_MODULE := true

這個設置表示,GmsCore模塊裝入system/priv-app

如果沒有這個設置,模塊會裝入system/app

可以在模塊目錄mm編譯,看看會裝在哪個目錄

priv-app里能獲得系統權限,安卓4.4后有了這個划分

 

小結:

1. 找個地方把google包放進去,比如vendor/google

2. 選擇要安裝的google服務,修改gms.mk文件

3. 修改device/corecompany/yourproductname/中相應的mk文件,引用gms.mk

4. 把out目錄刪掉,或者只刪去相應模塊

5. 編譯

 

添加第三方Launcher

想在ROM中添加第三方Launcher,和添加google服務模塊類似

假設這是一個沒有源碼,只有apk的Launcher:ThirdLauncher.apk

可仿造google服務模塊的mk文件編寫Launcher的mk文件

比如GoogleFeedback的 Android.mk 

如果Launcher需要系統權限,記得加上

LOCAL_PRIVILEGED_MODULE := true

 

小結:

1. 找個地方把ThirdLauncher.apk放好,比如vendor/yourcompany/ThirdLauncher/

2. 編寫好Launcher的mk文件;注意是否需要系統權限;mm編譯驗證一下

3. 在device/corecompany/yourproductname/中相應的mk文件中加入ThirdLauncher

4. 刪去out目錄下相應模塊,重新全編譯


免責聲明!

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



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