zoukankan      html  css  js  c++  java
  • Android:源码环境编译自定义的APP到ROM(System Image)中

    有时候我们需要在源码环境中增加自己的应用或模块,随ROM一起发布。

    下面讲述相关步骤:

    1. 首先可以在SDK环境下进行编码设计(如果你的APP不涉及到emulator无法模拟的硬件的话)

       也可以参考另一篇文章,直接在Eclipse中调试系统级应用源代码:

       Android:基于Eclipse编译调试系统级应用源代码

    2. 在SDK环境基本调试OK

    3. 将源代码复制到 $Android_Src/packages/apps/目录下,假设你的模块为 MyApplication

    4. 在MyApplication目录下新建一个Android.mk文件,可以从android自带的App下复制过来修改,如Calculator2下面的Android.mk,CleanSpec.mk也一并复制过来

    5. 修改Android.mk:

    [html] view plaincopy
     
    1. LOCAL_PATH := $(call my-dir)  
    2. include $(CLEAR_VARS)  
    3.   
    4. LOCAL_MODULE_TAGS := optional  
    5. #import gson lib  
    6. LOCAL_STATIC_JAVA_LIBRARIES := libgson  
    7.   
    8. LOCAL_SRC_FILES := $(call all-java-files-under, src)  
    9.   
    10. LOCAL_SDK_VERSION := current  
    11.   
    12. LOCAL_PACKAGE_NAME := MyApplication  
    13.   
    14. include $(BUILD_PACKAGE)  
    15. ##################################################  
    16. include $(CLEAR_VARS)  
    17. #Add gson support  
    18. LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libgson:libs/gson-2.2.2.jar  
    19. include $(BUILD_MULTI_PREBUILT)  
    20.   
    21. # Use the folloing include to make our test apk.  
    22. include $(call all-makefiles-under,$(LOCAL_PATH))  

    6. 修改 $Android_Src/build/target/product/common.mk 

    [html] view plaincopy
     
    1. #andy@2012.9.19,same as LOCAL_PACKAGE_NAME defined in Android.mk  
    2. PRODUCT_PACKAGES += MyApplication  
    3. #add before this line  
    4. $(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)  


    7.编译:

       . /build/envsetup.sh

     mmm packages/apps/MyApplication

    make snod 

    或全编译

    生成的apk在 out/target/product/相关目录下,跟具体的项目相关

    在ROM中会在/system/app下

    FAQ:

    Q:编译时出现android lasses-full-debug.jar] Error 41

    A:将该模块目录下的gen和bin目录删除后编译


     

    基于第三方apk内置到ROM参考另外一篇文章:

    Android:源码环境下移植第三方的apk内置到ROM(System Image)中

  • 相关阅读:
    GNU C的定义长度为0的数组
    Ubuntu如何启用双网卡
    DQN 文章第一篇
    awk用法
    Linux下C结构体初始化
    Linux kernel中的list怎么使用
    从美剧中学(1)
    Python @property 属性
    p40_数据交换方式
    3.TCP协议
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4501309.html
Copyright © 2011-2022 走看看