屏蔽传感器可以在软件上做到,但是第三方传感器还是会如实的根据 Framework 信息将被配置的(并不一定是支持的)传感器列出来, 从而造成一种支持该传感器,但传感器工作不正常的假象 。
如何彻底屏蔽传感器,让第三方软件不能根据 Framework 信息列出所有被配置过,但并不支持的传感器呢?
下面以光线和近程传感器为例:
修改前,CPU-Z 检测到传感器存在,但读不到具体状态信息,而实际机器是没有配备传感器的。![[M0] 不让第三方软件检测到不支持的传感器 - 图1](/uploads/projects/xshawn@aosp/9912e9589457080bdc9d434f8023b1cb.png)
修改后,CPU-Z 已经检测不到存在了,目的达到了。![[M0] 不让第三方软件检测到不支持的传感器 - 图2](/uploads/projects/xshawn@aosp/ae55e16620daf8b969c896b713e7c03a.png)
步骤:
1、打开 \alps\device\xxxx\project_name\device.mk 文件,
2、搜索 proximity.xml,或者 light.xml ,定位到如下脚本:
ifneq ($(strip $(CUSTOM_KERNEL_ALSPS)),)PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xmlPRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xmlelseifneq ($(strip $(CUSTOM_KERNEL_PS)),)PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xmlendififneq ($(strip $(CUSTOM_KERNEL_ALS)),)PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xmlendifendif
这段脚本看不懂,只知道是个
if-else,里面有3个宏开关:
CUSTOM_KERNEL_ALSPS,控制光线,近程;CUSTOM_KERNEL_PS,控制近程;CUSTOM_KERNEL_ALS,控制光线。 (具体作用可以通过PRODUCT_COPY_FILES后面的xml文件看出)
3、这里要同时关闭光线和近程传感器,所以确定宏开关 Key = CUSTOM_KERNEL_ALSPS,
4、打开 \alps\device\xxxx\project_name\ProjectConfig.mk 文件,
5、搜索上面找到的宏开关,定位如下脚本:CUSTOM_KERNEL_ALSPS = yes
6、将 yes 修改为 no。
编译……
(满心欢喜的等待……)
挂了……
python device/mediatek/build/build/tools/check_kernel_config.py -c device/eastaeon/aeon6580_we_m/ProjectConfig.mk -k kernel-3.18/arch/arm/configs/aeon6580_we_m_defconfig -p aeon6580_we_mKconfig Setting: yProjectConfig Setting: no*** Boolean ERROR ***: CONFIG_CUSTOM_KERNEL_ALSPS not sync with CUSTOM_KERNEL_ALSPS in ProjectConfig.mk
7、编译报错,好在明确说明了是 CONFIG_CUSTOM_KERNEL_ALSPS 的值与 CUSTOM_KERNEL_ALSPS 的值不同步。
8、全局搜索 CONFIG_CUSTOM_KERNEL_ALSPS 字段,找到并打开文件:\alps\kernel-3.18\arch\arm\configs\project_name_defconfig
和 \alps\kernel-3.18\arch\arm\configs\project_name_debug_defconfig 。
9、定位到并注释掉上面两个文件里面的 CONFIG_CUSTOM_KERNEL_ALSPS=y。
10、再次编译验证,OK。
