上一篇文章介绍了如何从源码中删除出厂的app应用,本文则在此基础上,详细介绍一下如何在Android内核源码树中添加一个新的app应用。java
网上也有介绍怎么在源码中添加新的app应用的博文,但大都数只介绍了不含有jni本地代码的app的添加方法,本文会更加全面地介绍三种不一样类型的app应用如何添加到Android内核源码树中编译。android
假设新的应用名字叫:HelloWorld,而且已经在Eclipse或者Android Studio中编译和调试经过了,咱们下面分三种状况来讨论如何将它添加到Android内核源码树中。微信
1. 不带jni本地代码app
首先,在Android内核源码中选择一个目录来存放HelloWorld应用的源码,好比放到/packages/apps目录下。学习
(1) 在HelloWorld目录下新建Android.mk文件,示例以下:ui
1spa 2.net 3调试 4code 5 6 |
|
注:LOCAL_MODULE_TAGS的备选值有user,eng,tests,optional,本示例中使用的TAGS值为eng,所以,仅当用户指定的编译选项为eng时才会编译该工程。
(2) 配置makefile,添加新的项目
这一步与《Android内核开发:从源码树中删除出厂的app应用》正好相反,选择 /device/<company>/ <product>/xxxx.mk,或者从 build/target/product/ 目录下选择一个被“引用”的.mk,在其中的PRODUCT_PACKAGES参数列表中添加本工程:
1 2 3 4 5 6 7 |
|
(3) 编译模块
在HelloWorld目录下输入mm命令,或者切换到Android源码根目录下执行下面任意一条命令便可:
1 2 |
|
编译生成的apk会放到在out/target/product/<product>/system/app/目录下。
2. 含有jni本地代码
对于含有jni的项目,则须要修改上述新建的Android.mk,以下:
1 2 3 4 5 6 7 8 9 10 |
|
jni目录下的Android.mk以下(假设jni目录下有inc和src目录):
1 2 3 4 5 6 7 8 9 |
|
3. 含有jni本地代码,而且本地代码依赖第三方库(.a或者so)
假设本地代码依赖的第三方库为:encoder.a 和 decoder.so
(1) 修改上述jni目录下的Android,mk,添加以下两项:
1 2 |
|
(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 |
|
关于如何在源码树中添加新的app应用就介绍到这里了,有任何疑问或者建议欢迎留言或者来信lujun.hust@gmail.com交流
结束语
免费学习更多精品课程,登陆乐搏学院官网http://h.learnbo.cn/
或关注咱们的官方微博微信,还有更多惊喜哦~
本文出自 “Jhuster的专栏” 博客,请务必保留此出