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 - 模块添加与编译相关推荐

  1. android.mk 模块编译,通过Android.mk添加一个编译模块到系统中的顺序如下

    ①LOCAL_PATH ②CLEAR_VARS ③LOCAL_SRC_FILES ④LOCAL_CFLAGS(可选) ⑤LOCAL_MODULE ⑥LOCAL_STATIC_LIBRARIES(可选) ...

  2. Android中添加自己的模块 【转】

    本文转载自:http://wallage.blog.163.com/blog/static/17389624201021791333695/ 转:http://blog.csdn.net/yili_x ...

  3. 新安装和已安装nginx如何添加未编译安装模块/补丁

    新安装和已安装nginx如何添加未编译安装模块/补丁 --http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=10485& ...

  4. 【WebRTC】在Android上用NDK编译WebRtc音频增益模块(AGC),降噪(NS),java调用JNI实现功能

    目录 ·········前言 ·········前期工作 ·········编译工作 ·········编码工作(AGC-JAVA) ·········编码工作(AGC-JNI) ·········编 ...

  5. 获取并编译linux源码,android获取源代码、编译、命令

    ---my--- 正确的编译android sdk: cd myandroid . ./build/envsetup.sh lunch sdk-eng make sdk //或者: make PROD ...

  6. 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

    作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...

  7. Android 系统添加SELinux权限

    CPU:RK3288 系统:Android 5.1 SELinux 主要由美国国家安全局开发.2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块. 通过虚拟文件系统 proc 来 ...

  8. Android.bp 添加宏开关【转】

    本文转载自:https://github.com/zzb2760715357/document/blob/master/android_doc/Android.bp%E6%B7%BB%E5%8A%A0 ...

  9. Android NDK引用预编译的动态链接库

    NDK里有个例子: android-ndk-r10/samples/module-exports/jni 一看就懂了 ---------------------------– 从r5版本开始,就支持预 ...

  10. android在java下建立模块,Android Studio:如何在Android模块中包含Java模块?

    在Android工作室我有一个Android模块,我们称之为MyAndroid.我还有一个Java模块(不是独立的JAR,而是模块中的完整Java项目),我们称之为MyJava.Android Stu ...

最新文章

  1. JDK 序列化, 碰到serialVersionUID 不一致问题,怎么处理?
  2. 【一个好的总经理必做的四件事】
  3. 2021年春季学期-信号与系统-第三次作业参考答案-第十道题
  4. 【Mood-9】搬家至博客园喽~~~
  5. 10进制与16进制之间的转换 delphi
  6. 分库分表的类型和特点
  7. 十八般武艺教你如何解决问题
  8. cheatengine找不到数值_“不会找问题”,只配在底层,最高效的思维方式导图,人生开挂!...
  9. angular 获取ng-repeat完成状态 $last
  10. Linux课程笔记 Crond介绍
  11. oracle如何添加undo,ORACLE RAC 11G 添加以及删除UNDO表空间
  12. html下拉表覆盖透明,css透明元素如何遮挡住fixed元素
  13. 正则表达式 蛮全的!
  14. 单片机的C语言应用程序设计实训教程,单片机的c语言程序设计实训
  15. C/C++基础学习代码(1)
  16. 熟知ios与android游戏渠道的区别,艾瑞:2013Q4中国iOS官方游戏分发渠道和Android游戏分发渠道产品榜单热门产品情况...
  17. 专属资料包——Ps基础、788款设计师字体、Ps品牌样机、《20款顶级vi品牌手册》、100款以上世界级ui设计、《世界级插画集》
  18. Intelligent Reference Curation for Visual Place Recognition via Bayesian Selective Fusion 论文阅读及注解
  19. Linux vim 编辑文件底部显示[converted]解决办法
  20. 使用在线报表设计器如何制作数据填报模板(efreport.com报表工具)

热门文章

  1. 博客“评论王”评选活动开始啦!
  2. Leetcode 1013. 总持续时间可被 60 整除的歌曲
  3. Jquery 动画
  4. 第四周 项目中的白盒测试
  5. IIS日志存入数据库之二:ETW
  6. CSS和CSS3中的伪元素和伪类(总结)
  7. [13]2019-ICML-Active Learning for Probabilistic Structured Prediction of Cuts and Matchings
  8. 【CDH】cdh搭建遇到的坑和解决过程
  9. Struts2出现的问题:
  10. 宽字节UTF-8、多字节互转