文章目录
开发平台基本信息
芯片: MT8766
版本: Android 12
kernel: msm-4.19
问题描述
公司的设备多数为定制类型的设备,所以,基本上都会开放root权限给到客户,而且,一般对设备安全性要求不高的,基本上都会选择关闭selinux,不然的话,每一个系统应用、服务或者bin文件,都要根据规则添加对应的selinux规则,是相当麻烦的,而且,我们正常输出给客户的版本都会是user版本;在调试Android 12的时候,一开始我是在userdebug版本上面调试的,也关闭了selinux,然后在功能调得差不多准备输出user版本测试时,发现开不了机了,一直卡在开机动画界面。
解决方法
1、user版本关闭selinux
具体解决问题的思路,可以参考MTK6771 user版本关闭 SELinux这篇文章,分析得很详细;提炼出来,要修改的地方,就是将userdebug.config参数带到user版本中,跟userdebug的一样,就可以了。
--- a/device/mediateksample/tb8766p1_bsp_1g_z400h_cbt/vnd_tb8766p1_bsp_1g_z400h_cbt.mk
+++ b/device/mediateksample/tb8766p1_bsp_1g_z400h_cbt/vnd_tb8766p1_bsp_1g_z400h_cbt.mk
@@ -31,7 +31,7 @@ ifeq ($(TARGET_BUILD_VARIANT), eng)
KERNEL_DEFCONFIG ?= tb8766p1_bsp_1g_z400h_cbt_debug_defconfig
endif
ifeq ($(TARGET_BUILD_VARIANT), user)
-KERNEL_DEFCONFIG ?= tb8766p1_bsp_1g_z400h_cbt_defconfig
+KERNEL_DEFCONFIG ?= tb8766p1_bsp_1g_z400h_cbt_defconfig userdebug.config
endif
ifeq ($(TARGET_BUILD_VARIANT), userdebug)
KERNEL_DEFCONFIG ?= tb8766p1_bsp_1g_z400h_cbt_defconfig userdebug.config
2、屏蔽关闭selinux之后出现的弹框
关闭selinux之后,开机会出现您的设备内部出现了问题。请联系您的设备制造商了解详情弹框,具体解决的方案,就是屏蔽那个对话框,代码如下:
--- a/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6761/src/drivers/platform.c
+++ b/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6761/src/drivers/platform.c
@@ -1506,12 +1506,12 @@ void platform_init(void)
#if CFG_UART_DYNAMIC_SWITCH
mtk_kpd_gpio_set();
- if (mtk_detect_key(KPD_DL_KEY1)) {
- pal_log_info("Vol Up detected. Log Keep on.\n");
- } else {
+ // if (mtk_detect_key(KPD_DL_KEY1)) {
+ // pal_log_info("Vol Up detected. Log Keep on.\n");
+ // } else {
pal_log_err("Log Turned Off.\n");
set_log_switch(0);
- }
+ // }
BOOTING_TIME_PROFILING_LOG("UART DYNAMIC SWITCH");
#endif
3、开机提示Your device has been unlocked and can’t be trusted
在userdebug或者去掉oem解锁后的user版本,在开机界面,每次都会出现Your device has been unlocked and can’t be trusted的提示,因为,对于AP侧来说,第一帧图片显示出来,也就是已经进入了lk界面,所以,在lk中,搜索相关的关键字,找到之后,将对应的内容注释掉即可,具体修改如下;
diff --git a/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/common/boot/vboot_state.c b/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/common/boot/vboot_state.c
index dae980d..bfe4978 100644
--- a/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/common/boot/vboot_state.c
+++ b/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/common/boot/vboot_state.c
@@ -157,9 +157,9 @@ int orange_state_warning(void)
video_clean_screen();
video_set_cursor(video_get_rows() / 2, 0);
- video_printf("Orange State\n\n");
- video_printf("Your device has been unlocked and can't be trusted\n");
- video_printf("Your device will boot in 5 seconds\n");
+ /* video_printf("Orange State\n\n"); */
+ /* video_printf("Your device has been unlocked and can't be trusted\n"); */
+ /* video_printf("Your device will boot in 5 seconds\n"); */
mtk_wdt_restart();
//mdelay(5000);
mtk_wdt_restart();