当前位置:主页 > 最新源码
Android内核开发:在源码树中添加新的app应用
日期:2017-09-13 浏览量:

上一篇文章介绍了如何从源码中删除出厂的app应用,本文则在此基础上,详细介绍一下如何在Android内核源码树中添加一个新的app应用。

网上也有介绍怎么在源码中添加新的app应用的博文,但大都数只介绍了不含有jni本地代码的app的添加方法,本文会更加全面地介绍三种不同类型的app应用如何添加到Android内核源码树中编译。

假设新的应用名字叫:HelloWorld,并且已经在Eclipse或者Android Studio中编译和调试通过了,我们下面分三种情况来讨论如何将它添加到Android内核源码树中。

1. 不带jni本地代码

首先,在Android内核源码中选择一个目录来存放HelloWorld应用的源码,比如放到/packages/apps目录下。

(1) 在HelloWorld目录下新建Android.mk文件,示例如下:


1

2

3

4

5

6


LOCAL_PATH:=$(callmy-dir)

include$(CLEAR_VARS)

LOCAL_MODULE_TAGS:=eng

LOCAL_SRC_FILES:=$(callall-subdir-java-files)

LOCAL_PACKAGE_NAME:=HelloWorld

include$(BUILD_PACKAGE)




注:LOCAL_MODULE_TAGS的备选值有user,eng,tests,optional,本示例中使用的TAGS值为eng,因此,仅当用户指定的编译选项为eng时才会编译该工程。

(2) 配置makefile,添加新的项目

这一步与《Android内核开发:从源码树中删除出厂的app应用》正好相反,选择 /device// /xxxx.mk,或者从build/target/product/ 目录下选择一个被“引用”的.mk,在其中的PRODUCT_PACKAGES参数列表中添加本工程:


1

2

3

4

5

6

7


PRODUCT_PACKAGES:=/

DeskClock/

Calculator/

Calendar/

Camera2/

Email/

HelloWorld




(3) 编译模块

在HelloWorld目录下输入mm命令,或者切换到Android源码根目录下执行下面任意一条命令即可:


1

2


$makeHelloWorld

$mmmpackage/apps/HelloWorld




编译生成的apk会放到在out/target/product//system/app/目录下。

2. 含有jni本地代码

对于含有jni的项目,则需要修改上述新建的Android.mk,如下:


1

2

3

4

5

6

7

8

9

10


LOCAL_PATH:=$(callmy-dir)

include$(CLEAR_VARS)

LOCAL_MODULE_TAGS:=eng

LOCAL_SRC_FILES:=$(callall-subdir-java-files)

LOCAL_PACKAGE_NAME:=HelloWorld

LOCAL_JNI_SHARED_LIBRARIES:=libmynative

include$(BUILD_PACKAGE)

include$(callall-makefiles-under,$(LOCAL_PATH))




jni目录下的Android.mk如下(假设jni目录下有inc和src目录):


1

2

3

4

5

6

7

8

9


LOCAL_PATH:=$(callmy-dir)

include$(CLEAR_VARS)

LOCAL_MODULE:=libmynative

LOCAL_SRC_FILES:=src/mynative.c

LOCAL_C_INCLUDES+=$(JNI_H_INCLUDE)

LOCAL_C_INCLUDES+=$(LOCAL_PATH)/inc

include$(BUILD_SHARED_LIBRARY)




3. 含有jni本地代码,并且本地代码依赖第三方库(.a或者so)

假设本地代码依赖的第三方库为:encoder.a 和 decoder.so

(1) 修改上述jni目录下的Android,mk,添加如下两项:


1

2


LOCAL_STATIC_LIBRARIES:=libencoder

LOCAL_SHARED_LIBRARIES:=libdecoder




(2) 修改HelloWorld目录下的Android.mk文件

首先把 encoder.a 和 decoder.so 都拷贝到工程根目录下,然后修改Android.mk文件,添加如下两项即可:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


include$(CLEAR_VARS)

LOCAL_MODULE:=libencoder

LOCAL_SRC_FILES:=encoder.a

LOCAL_MODULE_TAGS:=eng

LOCAL_MODULE_CLASS:=STATIC_LIBRARIES

LOCAL_MODULE_SUFFIX:=.a

include$(BUILD_PREBUILT)

include$(CLEAR_VARS)

LOCAL_MODULE:=libdecoder

LOCAL_SRC_FILES:=decoder.so

LOCAL_MODULE_TAGS:=eng

LOCAL_MODULE_CLASS:=SHARED_LIBRARIES

LOCAL_MODULE_SUFFIX:=.so

include$(BUILD_PREBUILT)




关于如何在源码树中添加新的app应用就介绍到这里了,有任何疑问或者建议欢迎留言或者来信lujun.hust@gmail.com交流

    相关文章:
    ·《LOL》新皮肤源代码 黑默丁格皮肤预览
    ·《LOL》新皮肤源代码 伊莉丝皮肤预览
    ·《LOL》新皮肤源代码 卡莉斯塔皮肤预览
    ·Facebook重磅发布ParlAI,重塑机器对话新格局(附源
    ·微软新论文:如何利用深度特征流提高视频识别
    → 特别推荐
    《LOL》新皮肤源代码
    《LOL》新皮肤源代码
    《LOL》新皮肤源代码
    Facebook重磅发布ParlA
    微软新论文:如何利
    最新版微信收银系统
    小白学源码审计-3
    JVM源码分析之线程局
    苹果发布macOS Sierra最
    《英雄联盟》最新女
    曹毅:源码资本的“
    2017最新代码托管服务
    众筹平台Kickstarter宣布
    LOL新英雄卡蜜尔技能
    htc vive前置摄像头 如
    → 热点TOP10
    11月12日最新江
    软件:唯有安
    LUPA开源周刊:
    开放源码在大
    南京程序员用
    胜思网络正式
    Zephyr 操作系统
    拆阴招儿:两
    CSDN博文精选:
    IJH江湖家居门

    友情链接/网站合作咨询: