Android系统可以通过hasSystemFeature方法来判断系统是否支持特定模块功能,从而进行不同的逻辑运行,当定制系统或系统裁剪时,需要对系统提供的Feature进行自定义和裁剪。
添加自定义Feature
系统Feature定义在frameworks/native/data/etc目录下,该目录下的xml文件会被打包复制到系统镜像system/etc/permissions目录下,所以添加自定义Feature的方法就是在frameworks/native/data/etc添加自定义的xml文件,并将该xml文件复制到系统镜像。
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2011 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Adds the feature indicating support for the Bluetooth API -->
<permissions>
<feature name="android.hardware.bluetooth" />
</permissions>
编译到系统镜像
device/qcom/common/base.mk
PRODUCT_COPY_FILES := \
frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml
移除Featrue示例
//移除闪光灯
diff --git a/frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml b/frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml
old mode 100644
new mode 100755
index ab81cd9..d44b28d
--- a/frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml
+++ b/frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml
@@ -20,5 +20,5 @@
<feature name="android.hardware.camera.any" />
<feature name="android.hardware.camera" />
<feature name="android.hardware.camera.autofocus" />
- <feature name="android.hardware.camera.flash" />
+ <!-- <feature name="android.hardware.camera.flash" /> -->
</permissions>
xml文件格式参照:frameworks\native\data\etc\android.hardware.bluetooth.xml