Android - 模块添加与编译
Android5.1 Ubuntu14.04
Android系统编译依靠.mk文件
添加google服务
我们自己的ROM里没有google服务
完整的google包里包含google框架和各种服务,我们可以选择性安装模块
在google包里products目录下,有一个 gms.mk 文件(或者自己起名字)
gms.mk管理着要安装的各个模块,找到关键字PRODUCT_PACKAGES
PRODUCT_PACKAGES后面跟着的就是要安装的模块
截取部分来看看:
PRODUCT_PACKAGES += \AndroidForWork \ConfigUpdater \GoogleBackupTransport \GoogleFeedback
一般会在device/corecompany/yourproductname/ 目录中存放.mk文件
corecompany指代芯片厂家,比如高通,MTK
可能是 device.mk ,也可能是 yourproductname.mk ;这个文件会被Makefile找到
这个mk文件中会引用 gms.mk (或者自己起名字)
需要把 gms.mk的路径写对,编译时会自动找到
$(call inherit-product-if-exists, vendor/google/products/intel_gms.mk)
本例中google包放在vendor目录下
观察 vendor/google/apps/GmsCore 里的 Android.mk 文件
LOCAL_PRIVILEGED_MODULE := true
这个设置表示,GmsCore模块装入system/priv-app
如果没有这个设置,模块会装入system/app
可以在模块目录mm编译,看看会装在哪个目录
priv-app里能获得系统权限,安卓4.4后有了这个划分
小结:
1. 找个地方把google包放进去,比如vendor/google
2. 选择要安装的google服务,修改gms.mk文件
3. 修改device/corecompany/yourproductname/中相应的mk文件,引用gms.mk
4. 把out目录删掉,或者只删去相应模块
5. 编译
添加第三方Launcher
想在ROM中添加第三方Launcher,和添加google服务模块类似
假设这是一个没有源码,只有apk的Launcher:ThirdLauncher.apk
可仿造google服务模块的mk文件编写Launcher的mk文件
比如GoogleFeedback的 Android.mk
如果Launcher需要系统权限,记得加上
LOCAL_PRIVILEGED_MODULE := true
小结:
1. 找个地方把ThirdLauncher.apk放好,比如vendor/yourcompany/ThirdLauncher/
2. 编写好Launcher的mk文件;注意是否需要系统权限;mm编译验证一下
3. 在device/corecompany/yourproductname/中相应的mk文件中加入ThirdLauncher
4. 删去out目录下相应模块,重新全编译
Android - 模块添加与编译相关推荐
- android.mk 模块编译,通过Android.mk添加一个编译模块到系统中的顺序如下
①LOCAL_PATH ②CLEAR_VARS ③LOCAL_SRC_FILES ④LOCAL_CFLAGS(可选) ⑤LOCAL_MODULE ⑥LOCAL_STATIC_LIBRARIES(可选) ...
- Android中添加自己的模块 【转】
本文转载自:http://wallage.blog.163.com/blog/static/17389624201021791333695/ 转:http://blog.csdn.net/yili_x ...
- 新安装和已安装nginx如何添加未编译安装模块/补丁
新安装和已安装nginx如何添加未编译安装模块/补丁 --http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=10485& ...
- 【WebRTC】在Android上用NDK编译WebRtc音频增益模块(AGC),降噪(NS),java调用JNI实现功能
目录 ·········前言 ·········前期工作 ·········编译工作 ·········编码工作(AGC-JAVA) ·········编码工作(AGC-JNI) ·········编 ...
- 获取并编译linux源码,android获取源代码、编译、命令
---my--- 正确的编译android sdk: cd myandroid . ./build/envsetup.sh lunch sdk-eng make sdk //或者: make PROD ...
- 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...
- Android 系统添加SELinux权限
CPU:RK3288 系统:Android 5.1 SELinux 主要由美国国家安全局开发.2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块. 通过虚拟文件系统 proc 来 ...
- Android.bp 添加宏开关【转】
本文转载自:https://github.com/zzb2760715357/document/blob/master/android_doc/Android.bp%E6%B7%BB%E5%8A%A0 ...
- Android NDK引用预编译的动态链接库
NDK里有个例子: android-ndk-r10/samples/module-exports/jni 一看就懂了 ---------------------------– 从r5版本开始,就支持预 ...
- android在java下建立模块,Android Studio:如何在Android模块中包含Java模块?
在Android工作室我有一个Android模块,我们称之为MyAndroid.我还有一个Java模块(不是独立的JAR,而是模块中的完整Java项目),我们称之为MyJava.Android Stu ...
最新文章
- JDK 序列化, 碰到serialVersionUID 不一致问题,怎么处理?
- 【一个好的总经理必做的四件事】
- 2021年春季学期-信号与系统-第三次作业参考答案-第十道题
- 【Mood-9】搬家至博客园喽~~~
- 10进制与16进制之间的转换 delphi
- 分库分表的类型和特点
- 十八般武艺教你如何解决问题
- cheatengine找不到数值_“不会找问题”,只配在底层,最高效的思维方式导图,人生开挂!...
- angular 获取ng-repeat完成状态 $last
- Linux课程笔记 Crond介绍
- oracle如何添加undo,ORACLE RAC 11G 添加以及删除UNDO表空间
- html下拉表覆盖透明,css透明元素如何遮挡住fixed元素
- 正则表达式 蛮全的!
- 单片机的C语言应用程序设计实训教程,单片机的c语言程序设计实训
- C/C++基础学习代码(1)
- 熟知ios与android游戏渠道的区别,艾瑞:2013Q4中国iOS官方游戏分发渠道和Android游戏分发渠道产品榜单热门产品情况...
- 专属资料包——Ps基础、788款设计师字体、Ps品牌样机、《20款顶级vi品牌手册》、100款以上世界级ui设计、《世界级插画集》
- Intelligent Reference Curation for Visual Place Recognition via Bayesian Selective Fusion 论文阅读及注解
- Linux vim 编辑文件底部显示[converted]解决办法
- 使用在线报表设计器如何制作数据填报模板(efreport.com报表工具)