生活随笔
收集整理的這篇文章主要介紹了
android之APP模块编译
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文地址:http://blog.csdn.net/yaphet__s/article/details/45640627
一,如何把app編進系統(tǒng)
??? a.源碼編譯,在packages/apps目錄下有安卓原生的app,以Bluetooth為例,源碼根目錄下有Android.mk文件:
??? packages\apps\Bluetooth
[html]?view plaincopy
LOCAL_PATH:=?$(call?my-dir)?? include?$(CLEAR_VARS)?? #負(fù)責(zé)清理除LOCAL_PATH外的其他LOCAL_XXX,這個清理動作是必須的,因為所有的編譯控制文件由同一個GNU??Make解析和執(zhí)行,?? #其變量是全局的。所以清理后才能避免相互影響。?? LOCAL_MODULE_TAGS?:=?optional?? ?? LOCAL_SRC_FILES?:=?\?? ????????$(call?all-java-files-under,?src)?? ?? LOCAL_PACKAGE_NAME?:=?Bluetooth?? ?? LOCAL_CERTIFICATE?:=?platform?? #使用系統(tǒng)簽名?? LOCAL_JNI_SHARED_LIBRARIES?:=?libbluetooth_jni?? LOCAL_JAVA_LIBRARIES?:=?javax.obex?telephony-common?mms-common?? LOCAL_STATIC_JAVA_LIBRARIES?:=?com.android.vcard?? LOCAL_JAVA_LIBRARIES?+=?com.broadcom.bt??? ?? LOCAL_REQUIRED_MODULES?:=?libbluetooth_jni?bluetooth.default?? ?? LOCAL_PROGUARD_ENABLED?:=?disabled?? #不使用代碼混淆的工具進行代碼混淆,不設(shè)置則默認(rèn)值為full,即將該工程代碼全部混淆?? include?$(BUILD_PACKAGE)?? ?? include?$(call?all-makefiles-under,$(LOCAL_PATH))??
???? 在packages\apps\Bluetooth下mm,可單獨編譯,在\out\target\product\xxx\system\app下會生成Bluetooth.apk。
? ?? 然后修改build下的mk文件,增加藍牙模塊,這樣在源碼根目錄下執(zhí)行make就會編譯到Bluetooth模塊
\build\target\product\generic_no_telephony.mk
[html]?view plaincopy
PRODUCT_PACKAGES?:=?\?? ????DeskClock?\?? ????Bluetooth?\?????#增加藍牙模塊?? ????Calculator?\??
??? b.apk編譯,針對沒有源碼的第三方apk,修改Android.mk:
[html]?view plaincopy
LOCAL_PATH?:=?$(call?my-dir)?? include?$(CLEAR_VARS)?? #?Module?name?should?match?apk?name?to?be?installed?? LOCAL_MODULE?:=?Animation?? LOCAL_MODULE_TAGS?:=?optional?? LOCAL_SRC_FILES?:=?Animation.apk?? LOCAL_MODULE_CLASS?:=?APPS?? LOCAL_MODULE_SUFFIX?:=?$(COMMON_ANDROID_PACKAGE_SUFFIX)?? LOCAL_CERTIFICATE?:=?PRESIGNED?? include?$(BUILD_PREBUILT)??
還需要修改device.mk:
[html]?view plaincopy
PRODUCT_PACKAGES?+=\?? ???????PackageInstallerRenew\?? ???????Video\?? ???????TlrService\?? ???????Animation\???#添加Animation模塊??
二,如何刪除app,使當(dāng)前app不會編進系統(tǒng)
??? 在packages/apps目錄下有安卓原生的app,有一些app是不需要的。
LOCAL_PACKAGE_NAME??? packages\apps\Bluetooth\Android.mk
[html]?view plaincopy
LOCAL_SRC_FILES?:=?\?? ????????$(call?all-java-files-under,?src)?? LOCAL_PACKAGE_NAME?:=?Bluetooth5???#將Bluetooth重命名為Bluetooth5。也可更改generic_no_telephony.mk?? #保證和generic_no_telephony.mk增加的模塊名字不一致即可?? LOCAL_CERTIFICATE?:=?platform??
?? 特別注意,有的模塊不一定在generic_no_telephony.mk中增加,可通過find . -name "*.mk" | xargs grep "Bluetooth"來查看在哪個mk里面聲明了。由于大部分企業(yè)都沒有統(tǒng)一的管理規(guī)范,一個模塊有時候會在多個mk中增加,所以最快的方式就是更改packages\apps\Bluetooth\Android.mk的LOCAL_PACKAGE_NAME ,或者置空。
???
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的android之APP模块编译的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。