屏蔽传感器可以在软件上做到,但是第三方传感器还是会如实的根据 Framework 信息将被配置的(并不一定是支持的)传感器列出来, 从而造成一种支持该传感器,但传感器工作不正常的假象

    如何彻底屏蔽传感器,让第三方软件不能根据 Framework 信息列出所有被配置过,但并不支持的传感器呢?


    下面以光线和近程传感器为例:

    修改前,CPU-Z 检测到传感器存在,但读不到具体状态信息,而实际机器是没有配备传感器的。
    [M0] 不让第三方软件检测到不支持的传感器 - 图1

    修改后,CPU-Z 已经检测不到存在了,目的达到了。
    [M0] 不让第三方软件检测到不支持的传感器 - 图2


    步骤:
    1、打开 \alps\device\xxxx\project_name\device.mk 文件,
    2、搜索 proximity.xml,或者 light.xml ,定位到如下脚本:

    1. ifneq ($(strip $(CUSTOM_KERNEL_ALSPS)),)
    2. PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml
    3. PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml
    4. else
    5. ifneq ($(strip $(CUSTOM_KERNEL_PS)),)
    6. PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml
    7. endif
    8. ifneq ($(strip $(CUSTOM_KERNEL_ALS)),)
    9. PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml
    10. endif
    11. endif

    这段脚本看不懂,只知道是个 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


    编译……
    (满心欢喜的等待……)
    挂了……

    1. 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_m
    2. Kconfig Setting: y
    3. ProjectConfig Setting: no
    4. *** 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。