1. 程式人生 > >android之APP模組編譯

android之APP模組編譯

原文地址:http://blog.csdn.net/yaphet__s/article/details/45640627

一,如何把app編進系統

    a.原始碼編譯,在packages/apps目錄下有安卓原生的app,以Bluetooth為例,原始碼根目錄下有Android.mk檔案:

    packages\apps\Bluetooth

  1. LOCAL_PATH:= $(call my-dir)  
  2. include $(CLEAR_VARS)  
  3. #負責清理除LOCAL_PATH外的其他LOCAL_XXX,這個清理動作是必須的,因為所有的編譯控制檔案由同一個GNU  Make解析和執行,  
  4. #其變數是全域性的。所以清理後才能避免相互影響。  
  5. LOCAL_MODULE_TAGS :optional
  6. LOCAL_SRC_FILES := \  
  7.         $(call all-java-files-under, src)  
  8. LOCAL_PACKAGE_NAME :Bluetooth
  9. LOCAL_CERTIFICATE :platform
  10. #使用系統簽名  
  11. LOCAL_JNI_SHARED_LIBRARIES :libbluetooth_jni
  12. LOCAL_JAVA_LIBRARIES :javax.obex telephony-common mms-common  
  13. LOCAL_STATIC_JAVA_LIBRARIES :com.android.vcard  
  14. LOCAL_JAVA_LIBRARIES += com.broadcom.bt   
  15. LOCAL_REQUIRED_MODULES :libbluetooth_jni bluetooth.default  
  16. LOCAL_PROGUARD_ENABLED :disabled
  17. #不使用程式碼混淆的工具進行程式碼混淆,不設定則預設值為full,即將該工程程式碼全部混淆  
  18. include $(BUILD_PACKAGE)  
  19. include $(call all-makefiles-under,$(LOCAL_PATH))  
     在packages\apps\Bluetooth下mm,可單獨編譯,在\out\target\product\xxx\system\app下會生成Bluetooth.apk。

     然後修改build下的mk檔案,增加藍芽模組,這樣在原始碼根目錄下執行make就會編譯到Bluetooth模組

\build\target\product\generic_no_telephony.mk

  1. PRODUCT_PACKAGES := \  
  2.     DeskClock \  
  3.     Bluetooth \     #增加藍芽模組  
  4.     Calculator \  

    b.apk編譯,針對沒有原始碼的第三方apk,修改Android.mk:

  1. LOCAL_PATH := $(call my-dir)  
  2. include $(CLEAR_VARS)  
  3. # Module name should match apk name to be installed  
  4. LOCAL_MODULE :Animation
  5. LOCAL_MODULE_TAGS :optional
  6. LOCAL_SRC_FILES :Animation.apk  
  7. LOCAL_MODULE_CLASS :APPS
  8. LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)  
  9. LOCAL_CERTIFICATE :PRESIGNED
  10. include $(BUILD_PREBUILT)  
還需要修改device.mk:
  1. PRODUCT_PACKAGES +=\  
  2.        PackageInstallerRenew\  
  3.        Video\  
  4.        TlrService\  
  5.        Animation\   #新增Animation模組  

二,如何刪除app,使當前app不會編進系統

    在packages/apps目錄下有安卓原生的app,有一些app是不需要的。

LOCAL_PACKAGE_NAME    packages\apps\Bluetooth\Android.mk

  1. LOCAL_SRC_FILES := \  
  2.         $(call all-java-files-under, src)  
  3. LOCAL_PACKAGE_NAME :Bluetooth5   #將Bluetooth重新命名為Bluetooth5。也可更改generic_no_telephony.mk  
  4. #保證和generic_no_telephony.mk增加的模組名字不一致即可  
  5. LOCAL_CERTIFICATE :platform
   特別注意,有的模組不一定在generic_no_telephony.mk中增加,可通過find . -name "*.mk" | xargs grep "Bluetooth"來檢視在哪個mk裡面聲明瞭。由於大部分企業都沒有統一的管理規範,一個模組有時候會在多個mk中增加,所以最快的方式就是更改packages\apps\Bluetooth\Android.mk的LOCAL_PACKAGE_NAME ,或者置空。