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目录下相应模块,重新全编译

时间: 2024-10-08 18:37:53

Android - 模块添加与编译的相关文章

Android Studio添加依赖编译报错

Warning:Conflict with dependency 'com.google.code.findbugs:jsr305'. Resolved versions for app (3.0.1) and test app (2.0.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details. 原因:由于添加的依赖版本是最新的,而代码仓库里边并没有最新的依赖导致报错 解决办法:在build.gradl

LVS-Fullnat之编译内核 将fullnat模块添加到内核

主机环境   redhat6.5 64位 实验环境   ip 172.25.29.6 安装包     asciidoc-8.4.5-4.1.el6.noarch.rpm               Lvs-fullnat-synproxy.tar.gz            kernel-2.6.32-220.23.1.el6.src.rpm              newt-devel-0.52.11-3.el6.x86_64.rpm                          sla

安装成功的nginx,如何添加未编译安装模块(非覆盖安装http_image_filter_module)

背景:1.做了图片上传小项目.2.图片上传,需要多图管理.3.图片上传,需要存储到Fastdfs.4.Fastdfs上的图片,和Nginx结合.5.Nginx从Fastdfs获得的图片,需要使用缩略图.a.在不需要缩略图,小图的情况下,可以使用原图.b.需要缩略图的情况下,指定目标宽度和高度,获得指定宽度和高度的缩略图. 关键的几个参考资料1.安装成功的nginx如何添加未编译安装模块http://blog.csdn.net/gebitan505/article/details/17612845

centos-nginx添加模块(无需重新编译)

$ wget http://nginx.org/download/nginx-1.3.2.tar.gz $ tar xvzf nginx-1.3.2.tar.gz #查看ngixn版本极其编译参数 $ /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.3.2 TLS SNI support disabled configure arguments: --prefix=/usr/local/nginx --with-http_stub_st

安装成功的nginx如何添加未编译安装模块

原已经安装好的nginx,现在需要添加一个未被编译安装的模块举例说明:安装第三方的ngx_cache_purge模块(用于清除指定URL的缓存)nginx的模块是需要重新编译nginx,而不是像apache一样配置文件引用.so 1.wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz tar -zxvf ngx_cache_purge-2.0.tar.gz cd /data0/software/nginx-1.1.10 2.

Nginx 编译,添加未编译安装模块ngx_cache_purge

Nginx 编译,添加未编译安装模块ngx_cache_purge 官网下载nginx及第三方ngx_cache_purge 模块 http://wiki.nginx.org/Install http://labs.frickle.com/nginx_ngx_cache_purge/ 编译与安装 Blockquote ./configure \ –prefix=/usr/local/nginx-1.8.0 \ –sbin-path=/usr/sbin/nginx \ –conf-path=/et

Android studio 添加第三方jar包遇到的编译不通过问题

经常会出现 Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Progr

【转】Android虚拟平台的编译和整合

原文网址:http://blog.csdn.net/rickleaf/article/details/6369065 概要 Android从2008年开始到本文写的2011年,短短三年的时间里成为手机行业首屈一指的操作系统,在平板电脑,GPS PND甚至工业控制等领域也迅速流行起来. 越来越多的CPU厂商提供完整的Android解决方案使得Android的编译方法千差万别. 本文从Google原生态的Android系统入手,试图跳过所有的CPU厂商从Android自带的ARM QEMU入手一步步

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

作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csdn.net/shulianghan VLC 二次开发 视频教程 : http://edu.csdn.net/course/detail/355 博客总结 : -- 本博客目的 : 让 Android 开发者通过看本博客能够掌握独立移植 VLC Media Player 核心框架到自己的 app 中,