【发布时间】:2021-02-14 05:12:04
【问题描述】:
在 Manifest 中声明位置权限的构建应用程序会在安装时使用最新的 AGP 4.1.0 获得默认授予的权限!!!
复制步骤:
- 在Android studio中签出和导入https://github.com/avianey/Android30LocationRational
- 连接在 sdk 29 或 30 下运行的设备或模拟器
- 从 gradle 任务面板运行 uninstallAll 任务,以确保从设备上卸载应用程序
- 从 gradle 任务面板运行 installRelease 任务
- 在设备上打开应用
- ACCESS_FINE_LOCATION 和 ACCESS_BACKGROUND_LOCATION 默认授予!
预期行为:
- 安装时未授予权限
注意事项:
- 恢复到类路径“com.android.tools.build:gradle:4.0.2”修复问题
- 使用 compileSdkVersion/targetSdkVersion 29 或 30 没有任何改变
- 当使用来自 android studio 的默认安装配置安装应用程序时,问题不存在(默认情况下未授予权限)查看屏幕截图(红色是 bugguy,绿色不是并且行为符合预期)
因此,在应用商店提交审核的捆绑应用存在问题,并且没有通过位置权限的合规测试,原因是在请求权限之前应该显示一个对话框...在 AGP 上找不到任何线索更新日志页面:https://developer.android.com/studio/releases/gradle-plugin
有避免使用旧的构建工具的想法吗?
【问题讨论】:
-
有兴趣的可以在这里查看状态:issuetracker.google.com/issues/172112073
-
使用 assembleRelease 并手动安装 .apk 行为是正确的,没有授予权限。如果从终端启动 ./gradlew installRelease(或 instalDebug)会发生什么?
-
我注意到
RECORD_AUDIO权限存在同样的问题
标签: android gradle android-permissions