zoukankan      html  css  js  c++  java
  • 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的路径写对,编译时会自动找到

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

  • 相关阅读:
    二战后的一些战争启示(弱国无外交)
    为了生存人类必须去探索宇宙
    不同版本Eclipse对JDK版本要求
    string 转 java对象、转map的方式
    原生JS实现全选,反选
    oracle批量update
    HttpURLConnection 当作请求调用接口不带返回参数的工具类
    sun.misc.BASE64Encoder在Eclipse中不能直接使用的原因和解决方案
    javamail 发送邮件demo(文字与附件)
    Linux ping不通百度的解决方法
  • 原文地址:https://www.cnblogs.com/l2rf/p/5780231.html
Copyright © 2011-2022 走看看