问题描述:工厂生产过程中,烧录好镜像,不接camera第一次开机再关机后,装上摄像头再次开机进入系统,发现桌面没有相机这个apk,无法进行摄像头的检测。重新烧录系统后,ok。
对于工厂的人只能&*(……&%&¥……
问题分析:既然重新烧录系统后没问题,那应该就是保存了相关用户信息,导致的。
步骤一:重新烧录镜像,不安装摄像头开机,进入系统,桌面无相机apk。
步骤二:恢复出厂设置,关机,安装射系统,开机,桌面出现相机apk。
问题原因:第一次开机,android会对camera硬件进行检测,如果没有发现camera则不在桌面生成相机apk,具体是没安装还是干啥还不能确定,继续分析;
从/system/app下可以看到存在相机这个apk,那到底是到哪里去了呢...
userdata分区是挂载到/data下面,索性把data分区通过adb pull出来,然后下文件变化。
在/data/system/users/0/package-restrictions.xml中发现其中猫腻(左边为相机apk被隐藏的文件)
<disabled-componets>项把相机apk给隐藏掉了,不在桌面上生成,但是已经安装到系统里了。终于找到了问题原因了,尼玛,不容易啊,对于一个驱动工程师来说。
复现开机无相机apk现象,然后连接adb,干掉/data/system/users/0/package-restrictions.xml文件,重新开机,发现相机apk出现了。
接下来是找到哪里对package-restrictions.xml这个文件进行操作了。
最后是在frameworks\base\services\java\com\android\server\pm\Settings.java中的writePackageRestrictionsLPr函数中定位到了
通过加一条if语句,在<disabled-componets>选项里过滤掉camera的操作。

在Android设备中,如果在未安装摄像头的情况下首次开机,系统可能不会在桌面显示相机应用。问题在于第一次开机时,系统会检查硬件,如果没有检测到摄像头,相机APK不会出现在桌面。分析发现,`package-restrictions.xml`文件的`<disabled-components>`项将相机应用隐藏。解决方法是删除或修改该文件,以使相机应用恢复正常显示。问题源定位在`Settings.java`的`writePackageRestrictionsLPr`函数,可以通过在此处添加条件判断来避免对相机应用的限制操作。

1160

被折叠的 条评论
为什么被折叠?



