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

  • 相关阅读:
    HTML简介
    【JAVA】【基础语法】Java中条件表达式的参数类型转换
    【JAVA】【基础语法】Java中操作运算符的细节
    【JAVA】【基础类型】StringBuffer和StringBuilder
    【JAVA】【基础类型】String类型的字符串池
    【JAVA】【基础类型】Java中封装类-String封装类
    【JAVA】【基础类型】Integer类型的常量池
    【JAVA】【基础类型】Java中的不可变类型
    【JAVA】【基础类型】Java中封装类-Math数学运算类
    【JAVA】【基础类型】Java中封装类-封装类型和基础类型
  • 原文地址:https://www.cnblogs.com/l2rf/p/5780231.html
Copyright © 2020-2023  润新知