• Android之APP模块编译


    一,如何把app编进系统

        a.源码编译,在packages/apps目录下有安卓原生的app,以Bluetooth为例,源码根目录下有Android.mk文件:

        packagesappsBluetooth

    [html] view plaincopy
     
     
    1. LOCAL_PATH:= $(call my-dir)  
    2. include $(CLEAR_VARS)  
    3. #负责清理除LOCAL_PATH外的其他LOCAL_XXX,这个清理动作是必须的,因为所有的编译控制文件由同一个GNU  Make解析和执行,  
    4. #其变量是全局的。所以清理后才能避免相互影响。  
    5. LOCAL_MODULE_TAGS := optional  
    6.   
    7. LOCAL_SRC_FILES :=   
    8.         $(call all-java-files-under, src)  
    9.   
    10. LOCAL_PACKAGE_NAME := Bluetooth  
    11.   
    12. LOCAL_CERTIFICATE := platform  
    13. #使用系统签名  
    14. LOCAL_JNI_SHARED_LIBRARIES := libbluetooth_jni  
    15. LOCAL_JAVA_LIBRARIES := javax.obex telephony-common mms-common  
    16. LOCAL_STATIC_JAVA_LIBRARIES := com.android.vcard  
    17. LOCAL_JAVA_LIBRARIES += com.broadcom.bt   
    18.   
    19. LOCAL_REQUIRED_MODULES := libbluetooth_jni bluetooth.default  
    20.   
    21. LOCAL_PROGUARD_ENABLED := disabled  
    22. #不使用代码混淆的工具进行代码混淆,不设置则默认值为full,即将该工程代码全部混淆  
    23. include $(BUILD_PACKAGE)  
    24.   
    25. include $(call all-makefiles-under,$(LOCAL_PATH))  

         在packagesappsBluetooth下mm,可单独编译,在out argetproductxxxsystemapp下会生成Bluetooth.apk。

         然后修改build下的mk文件,增加蓝牙模块,这样在源码根目录下执行make就会编译到Bluetooth模块

    uild argetproductgeneric_no_telephony.mk

    [html] view plaincopy
     
     
    1. PRODUCT_PACKAGES :=   
    2.     DeskClock   
    3.     Bluetooth      #增加蓝牙模块  
    4.     Calculator   


        b.apk编译,针对没有源码的第三方apk,修改Android.mk:

    [html] view plaincopy
     
     
    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:

    [html] view plaincopy
     
     
    1. PRODUCT_PACKAGES +=  
    2.        PackageInstallerRenew  
    3.        Video  
    4.        TlrService  
    5.        Animation   #添加Animation模块  


    二,如何删除app,使当前app不会编进系统

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

    LOCAL_PACKAGE_NAME    packagesappsBluetoothAndroid.mk

    [html] view plaincopy
     
     
    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中增加,所以最快的方式就是更改packagesappsBluetoothAndroid.mk的LOCAL_PACKAGE_NAME ,或者置空。

       

  • 相关阅读:
    C语言函数手册—函数分类列表
    HTTP协议详解(一直在用可是这篇太好了转一下)
    Substance风格实例大全javaswing皮肤风格大全(原)
    Component creation must be done on Event Dispatch Thread错误解决方法
    用开源Look&Feel (Substance)写 漂亮的Swing应用程序
    Swift翻译之-关于Swift
    Swift翻译之-Swift语法入门 Swift语法介绍
    Swift语言简介+快速上手
    JDK各个版本的新特性jdk1.5-jdk8
    5个常用Java代码混淆器 助你保护你的代码
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/8150570.html
Copyright © 2020-2023  润新知