標籤:
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的路徑寫對,編譯時間會自動找到
$(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目錄下相應模組,重新全編譯
Android - 模組添加與編譯