云打包出现android.permission.READ MEDIA IMAGES 和android.permission.READ MEDIA VIDEO这两个权限且无法移除
云打包出现android.permission.READ MEDIA IMAGES 和android.permission.READ MEDIA VIDEO这两个权限且无法移除
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows 10 家庭中文版 22H2 | 4.87 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
手机系统:Android
手机系统版本号:Android 15
手机厂商:小米
手机机型:小米14
页面类型:vue
vue版本:vue2
打包方式:云端
操作步骤:
云打包后会强制添加这两个权限,
<uses-permission android:name="android.permission.READ MEDIA IMAGES"/>
<uses-permission android:name="android.permission.READ MEDIA VIDEO"/>
预期结果:
移除这两个权限,
<uses-permission android:name="android.permission.READ MEDIA IMAGES"/>
<uses-permission android:name="android.permission.READ MEDIA VIDEO"/>
实际结果:
未移除,提交谷歌之后依旧被驳回!!
bug描述:
我的应用就一个单纯的蓝牙连接设备的应用,但是打包之后却自动添加了这两个权限
<uses-permission android:name="android.permission.READ MEDIA IMAGES"/>
<uses-permission android:name="android.permission.READ MEDIA VIDEO"/>
在manifest.josn中配置强制移除,不行,添加AndroidManifest.xml配置
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDE0" tools:node="remove" />
该bug反馈内容基本完整,包含标题、详细描述、代码示例、复现步骤、预期与实际结果及分类信息。但可补充项目是否使用特定插件(如蓝牙相关插件),以及确认权限移除配置的具体位置。
bug成立可能性高。根据知识库,云端打包会自动添加部分权限来源,若应用依赖三方SDK(含uts插件)可能引入额外权限。用户反馈的READ_MEDIA_IMAGES/VIDEO权限通常由媒体类功能触发,但其纯蓝牙应用不应需要这些权限。
关键问题在于:
用户尝试的AndroidManifest.xml移除配置存在拼写错误(READ_MEDIA_VIDE0应为VIDEO)
知识库明确说明:直接修改AndroidManifest.xml添加tools:node="remove"在某些场景不生效来源,应优先通过manifest.json的"强制移除的权限"可视化界面配置
可能因项目隐式依赖了含媒体权限的插件(如旧版蓝牙插件)
建议操作:
检查manifest.json中"Android云打包权限配置"→"强制移除的权限"是否正确定义android.permission.READ_MEDIA_IMAGES和android.permission.READ_MEDIA_VIDEO
排查项目依赖的插件(尤其蓝牙相关),确认是否间接引用了媒体模块
升级至最新HBuilderX版本(当前4.87非最新),新版可能优化权限处理逻辑参考文档
内容为 AI 生成,仅供参考
这是由 uni-app 框架或集成的第三方 SDK 在适配 Android 13(API 33)及以上版本时自动引入的。在 Android 13+ 中,旧的 READ_EXTERNAL_STORAGE 权限被细分为 READ_MEDIA_IMAGES、READ_MEDIA_VIDEO 和 READ_MEDIA_AUDIO 三个更精确的权限。即使你的应用是蓝牙应用,如果项目中包含了任何可能触发存储权限检测的模块(例如 uni-app 框架自身、UI 库、或你引入的某个 SDK),云打包服务在构建时可能会为适配新系统而自动注入这些权限声明。
你已尝试的两种方法(在 manifest.json 中移除、在 AndroidManifest.xml 中使用 tools:node="remove")思路正确,但云端打包时可能因构建流程合并清单文件的优先级问题未能生效。可以按以下步骤排查和解决:
-
检查并清理模块依赖:在 HBuilderX 中打开项目的
manifest.json,进入“App 模块配置”。仔细检查所有已勾选的模块,特别是与“相册”、“文件”、“存储”相关的模块(如“相册(图片或视频)”、“文件存储”等),尝试暂时取消勾选这些模块后重新云打包测试。同时,检查uni_modules和nativeplugins目录,移除或更新可能引入媒体权限的第三方插件。 -
确保自定义
AndroidManifest.xml配置正确:- 文件位置应为项目根目录的
nativeplugins\AndroidManifest.xml(如果不存在则创建)。 - 内容需要包含正确的命名空间和移除语句。你提供的代码中
READ_MEDIA_VIDE0的0是数字零,应为字母O。修正后的示例如下:<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <!-- 移除自动添加的媒体权限 --> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove" /> </manifest>
- 文件位置应为项目根目录的
-
检查并配置
manifest.json中的permissionExternalStorage:在manifest.json的"app-plus" -> "distribute" -> "android"节点下,确认"permissionExternalStorage"相关配置是否被显式设置。可以尝试明确将其配置为仅请求最低必要权限或完全禁用。例如:"permissionExternalStorage": { "request": "none", // 或根据需求设置为 "minimal" 等 "scope": "none" }

