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文件内容格式参照:
|
添加自定义Feature方法2
如果出于独立管理或者解耦的原因,并不想在frameworks/native/data/etc目录下添加文件,提供第二种自定义Feature的方法:
- 在aosp根目录下新建自己的git仓库目录,在新建的仓库目录下添加自定义Feature的xml文件,格式和添加自定义Feature方法1中讲的一样;
-
在自定的仓库目录下新建device.mk,device.mk文件添加内容示例内容,编译时将自定义feature文件打包到镜像目录中:
PRODUCT_COPY_FILES += mydir/com.
new
.feature.xml:system/etc/permissions/com.
new
.feature.xml
- 以高通为例,在device/qcom/common/base.mk文件中加入#include "mydir/device.mk"文件;
- 重新编译系统
更多相关文章
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
- android获取view宽高的几种方法
- Flutter 启动页
- [经验总结]eclipse转向android studio常见问题汇总
- ------------------Android中对GridView, ListView等滚动控件的To