Unity 2022.3.8f1移除Android权限后APK仍存在该权限的问题
解决Unity 2022.3.8f1中无法移除
ACCESS_COARSE_LOCATION权限的问题 1. 先检查Player Settings的自动权限开关
Unity的Player Settings会自动生成部分系统权限,这是很多人忽略的点:
- 打开
Edit > Project Settings > Player > Android > Publishing Settings - 展开
Other Settings,找到Location Service相关选项,确保Enable Location Service处于关闭状态 - 若该选项开启,Unity会自动向Manifest注入定位相关权限,手动移除也会被覆盖
2. 确认自定义Manifest的位置与写法
你的Manifest语法本身没问题,但要确保修改的是项目生效的Manifest文件:
- 正确路径为
Assets/Plugins/Android/AndroidManifest.xml,修改Temp目录或其他位置的Manifest不会对构建产生影响 - 确保
tools命名空间和移除标签的写法准确,完整示例如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.your.package.name" xmlns:tools="http://schemas.android.com/tools"> <!-- 其他权限与配置节点 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" /> <!-- 若需要,可同时移除精细定位权限 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" /> </manifest>
3. 排查第三方插件的权限注入
多数第三方SDK(如广告、地图、社交类插件)会自动向Manifest添加权限,需针对性处理:
- 找到插件对应的Manifest文件(通常在
Assets/Plugins/Android/[插件名称]/AndroidManifest.xml),检查是否包含ACCESS_COARSE_LOCATION权限 - 可直接修改插件的Manifest,添加
tools:node="remove"标签;或在项目根目录的Assets/Plugins/Android/AndroidManifest.xml中用相同标签强制覆盖 - 注意:部分插件会通过代码动态申请权限,即使移除Manifest权限,运行时仍可能弹出请求,需检查插件初始化逻辑,关闭相关定位功能
4. 用Gradle配置强制移除权限
若以上方法无效,可通过Gradle配置强制排除权限:
- 生成自定义Gradle模板:在Player Settings的Publishing Settings中勾选
Custom Main Gradle Template,生成Assets/Plugins/Android/mainTemplate.gradle - 在
android节点下添加权限排除规则:
android { // 原有配置 packagingOptions { permissions { exclude 'android.permission.ACCESS_COARSE_LOCATION' } } }
5. 验证权限是否移除
构建APK后,可用aapt工具确认结果:
- 打开命令行执行:
aapt dump permissions 你的APK文件路径.apk
- 查看输出内容,确认
ACCESS_COARSE_LOCATION已被移除
内容的提问来源于stack exchange,提问作者Musztafa Al-Meri
相关产品推荐
相关产品推荐

