方法一:
系统应用和homepackage 不允许disable,所以就在编译的时候把它作为系统应用编译就行,给系统签名,获得系统级权限
android:sharedUserId="android.uid.system"
比如让谷歌的Search Engine Selctor不允许禁用,就找到这个应用的apk编译目录,
首先包名是com.google.android.apps.setupwizard.searchselector
是在SetupWizard里面一起编译的
vendor/google/apps/ SetupWizard/Android.mk
找到
LOCAL_MODULE := SearchSelector
修改
-LOCAL_CERTIFICATE := PRESIGNED
+LOCAL_CERTIFICATE := platform
方法二:
在vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
方法体
public Set<String> getKeepEnabledPackages() {
最后return keepEnabledPackages前添加
keepEnabledPackages.add("com.google.android.apps.setupwizard.searchselector");
方法一是实打实变成了系统应用了,有系统级权限,但是方法二只是改了设置的显示
GTS跑测问题
GTS报错是:
1,arm64-v8a GtsRegulationComplianceTestCases
com.google.android.regulationcompliance.gts.EEAComplianceTest#testEEAv2Compliance
上面是模块和单例
下面是报错,就需要search engine selector 不可禁用
java.lang.RuntimeException: This build does not meet all of the EEA requirements for EEA devices.
2,GtsMediaTestCases
com.google.android.media.gts.WidevineH264PlaybackTests#testL3WithUHD30
com.google.android.media.gts.WidevineH264PlaybackTests#testCbcsL3WithUHD30
报错信息:java.lang.Exception: Failed components: < Video Reached Seconds: The Video only played to 17933 ms instead of 20000 ms >
这个问题没看懂,说是分辨率问题,下面方法能过就行
解决方法:
ProjectConfig.mk里加入
+#DRM(GTS media)
+MTK_WVDRM_SUPPORT = yes
+MTK_PERSIST_PARTITION_SUPPORT = yes
+MTK_SEC_VIDEO_PATH_SUPPORT = no
+MTK_WVDRM_L1_SUPPORT = no
+MTK_DRM_KEY_MNG_SUPPORT = no
+MTK_TEE_GP_SUPPORT = no
defconfig和 debug_defconfig文件也去除,
+# DRM(GTS media)
+# CONFIG_MTK_SEC_VIDEO_PATH_SUPPORT is not set
+# CONFIG_DRM_KEY_MNG_SUPPORT is not set
+# CONFIG_MTK_TEE_GP_SUPPORT is not set
还要增加两个文件override/device/mediatek/mt6765/media_codecs_c2.xml
override/device/mediatek/mt6765/media_codecs_c2_svp.xml
这两个文件在learn文件夹里,出去看
CTS跑测问题:
1, CtsAppTestCases
android.app.cts.SystemFeaturesTest#testSensorFeatures
报错:java.lang.AssertionError: PackageManager#hasSystemFeature(android.hardware.sensor.light) returns true but SensorManager#getSensorList(5) shows sensors [] expected:<true> but was:<false>
意思是android.hardware.sensor.light返回的权限是true;但实际SensorManager需要的false,就不要这个权限
解决方法:
frameworks/ native/data/etc/android.hardware.sensor.light.xml
注释掉里面的permissions
- <feature name="android.hardware.sensor.light" />
+ <!--<feature name="android.hardware.sensor.light" />-->
这个改完后还会报个相关的错
java.lang.AssertionError: PackageManager#hasSystemFeature(android.hardware.sensor.proximity) returns true but SensorManager#getSensorList(8) shows sensors [] expected:<true> but was:<false>
同理到frameworks/native/data/etc/android.hardware.sensor.proximity.xml
2,CtsSecurityHostTestCases
android.security.cts.SELinuxHostTest#testProcTypeViolators
报错信息:java.lang.AssertionError: The following types in proc must be associated with the "proc_type" attribute: nlscan_file
这个是和Selinux权限相关的,可能有些自定义的权限或者改过权限相关的有问题
解决方法:在device/mediate/ sepolicy/basic/non_plat
里面找到相关引用到nlscan_file 或 proc_type的地方再进行判断,不行就删了再看,只要不是原生的都可以删了