Android系统添加Feature方法

介绍

        应用程序或者系统框架中可以通过getPackageManager().hasSystemFeature(String string)判断系统是否支持特定的模块功能,而运行不同的代码逻辑分支。比如可以通过getPackageManager().hasSystemFeature("android.hardware.bluetooth")判断系统是否支持蓝牙。当我们定制系统的时候,需要在Android系统需要对系统提供的Feature进行裁剪和自定义,那么如何去进行裁剪和自定呢?这是本文要讨论的主题。

Feature实现原理

        参考https://blog.csdn.net/u013398960/article/details/78582096

添加自定义Feature方法1

        从Feature实现原理知道,系统Feature定义在frameworks/native/data/etc目录下,这下面的xml文件会被打包拷贝到镜像system/etc/permissions目录下。所以要自定义Feature,最简单的方法就是在frameworks/native/data/etc添加自定义的xml文件,xml文件内容格式参照:

xml version="1.0" encoding="utf-8"?>

<permissions>

    <feature name="android.hardware.bluetooth" />

permissions>

添加自定义Feature方法2

       如果出于独立管理或者解耦的原因,并不想在frameworks/native/data/etc目录下添加文件,提供第二种自定义Feature的方法:

  1. 在aosp根目录下新建自己的git仓库目录,在新建的仓库目录下添加自定义Feature的xml文件,格式和添加自定义Feature方法1中讲的一样;
  2. 在自定的仓库目录下新建device.mk,device.mk文件添加内容示例内容,编译时将自定义feature文件打包到镜像目录中:

    PRODUCT_COPY_FILES += mydir/com.new.feature.xml:system/etc/permissions/com.new.feature.xml

  3. 以高通为例,在device/qcom/common/base.mk文件中加入#include "mydir/device.mk"文件;
  4. 重新编译系统

你可能感兴趣的:(Android)