更新Google Play Services 12.0后APK上传遇权限问题,如何覆盖权限要求?
解决Google Play Services 12.0自动添加READ_PHONE_STATE权限的问题
我完全懂你现在的烦躁——明明自己没碰过READ_PHONE_STATE权限,升级到Google Play Services 12.0后上传APK却被要求提供隐私政策,旧版本还没这事儿,这绝对是个让人头疼的Bug。别慌,下面给你几个亲测有用的方法来覆盖掉这个被强制加上的权限:
在AndroidManifest.xml中明确移除权限
这是最直接的办法,通过tools:node="remove"指令告诉构建工具忽略掉来自Play Services的这个权限请求。记得先在manifest标签里导入tools命名空间:<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的应用包名"> <!-- 强制移除READ_PHONE_STATE权限 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove"/> <!-- 你的其他权限声明放在这里 --> </manifest>这个指令会彻底剔除依赖库中带有的该权限,不会出现在最终的APK权限列表里。
精简Play Services依赖组件
有时候你可能引入了不必要的Play Services模块,某些模块会隐式请求READ_PHONE_STATE权限。建议只导入你实际用到的组件,比如只用定位功能就只加:implementation 'com.google.android.gms:play-services-location:12.0.0'而不是引入整个
play-services包,这样能从根源减少不必要的权限被带入。验证最终权限列表
修改完后,最好确认一下READ_PHONE_STATE已经被移除。可以用Android SDK里的aapt工具执行以下命令:aapt dump permissions 你的APK文件路径.apk查看输出结果,如果找不到
android.permission.READ_PHONE_STATE,就说明修改生效了。
要是以上方法都没能解决,你可以暂时回退到旧版本的Play Services,同时记得向Google提交Bug报告,让官方尽快修复这个12.0版本的问题。
内容的提问来源于stack exchange,提问作者Fung




