问题出现:用户反映更新头像失败,提示获取权限失败,并且在权限中列表中找不到储存权限的管理开关。
排查:
1,其他app是否存在同样问题?经排查除了自己app以外其他app都没问题。
2,是否是targetApi的问题,通过反编译发现别人家的app和自家apptargetApi一样,且在反编译包过程中发现一个有趣的东西。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29"/>
android:maxSdkVersion="29"这个属性,虽然自己很少用过,但是看其语义就猜测是与本次Android11没有权限管理入口有关,因为Android11的ApiLevel是30,很明显是超过29的,所以锁定在这条属性上。
解决思路:
1,进入app module下的manifest中,查看混合后的manifest,但是并没有发现android:maxSdkVersion="29"这条属性。
2,进行全局搜索android:maxSdkVersion="29",最终在一个第三方lib中找到了该条属性,找到了问题所在。
解决方法:
加入tools:node="replace"属性,使其无效或移除该第三方lib,类似这样
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="replace" />
网友评论