[Mtk][M0] 不讓第三方軟體檢測到不支援的感測器

weixin_34006468發表於2016-05-25

遮蔽感測器可以在軟體上做到,但是第三方感測器還是會如實的根據 Framework 資訊將被配置的(並不一定是支援的)感測器列出來, ** 從而造成一種支援該感測器,但感測器工作不正常的假象 ** 。

如何徹底遮蔽感測器,讓第三方軟體不能根據 Framework 資訊列出所有被配置過,但並不支援的感測器呢?


下面以光線和近程感測器為例:

修改前,CPU-Z 檢測到感測器存在,但讀不到具體狀態資訊,而實際機器是沒有配備感測器的。

2035681-3def09f24c07aa71.png
修改前

修改後,CPU-Z 已經檢測不到存在了,目的達到了。

2035681-c0a56f67a1fb4137.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.xml
  PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml
else
  ifneq ($(strip $(CUSTOM_KERNEL_PS)),)
    PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml
  endif
  ifneq ($(strip $(CUSTOM_KERNEL_ALS)),)
    PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml
  endif
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


編譯......

(滿心歡喜的等待......)

掛了......

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
Kconfig Setting: y
ProjectConfig 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。

相關文章