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目錄下相應模塊,重新全編譯