云打包出现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" />

2 回复

该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_IMAGESREAD_MEDIA_VIDEOREAD_MEDIA_AUDIO 三个更精确的权限。即使你的应用是蓝牙应用,如果项目中包含了任何可能触发存储权限检测的模块(例如 uni-app 框架自身、UI 库、或你引入的某个 SDK),云打包服务在构建时可能会为适配新系统而自动注入这些权限声明。

你已尝试的两种方法(在 manifest.json 中移除、在 AndroidManifest.xml 中使用 tools:node="remove")思路正确,但云端打包时可能因构建流程合并清单文件的优先级问题未能生效。可以按以下步骤排查和解决:

  1. 检查并清理模块依赖:在 HBuilderX 中打开项目的 manifest.json,进入“App 模块配置”。仔细检查所有已勾选的模块,特别是与“相册”、“文件”、“存储”相关的模块(如“相册(图片或视频)”、“文件存储”等),尝试暂时取消勾选这些模块后重新云打包测试。同时,检查 uni_modulesnativeplugins 目录,移除或更新可能引入媒体权限的第三方插件。

  2. 确保自定义 AndroidManifest.xml 配置正确

    • 文件位置应为项目根目录的 nativeplugins\AndroidManifest.xml(如果不存在则创建)。
    • 内容需要包含正确的命名空间和移除语句。你提供的代码中 READ_MEDIA_VIDE00 是数字零,应为字母 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>
      
  3. 检查并配置 manifest.json 中的 permissionExternalStorage:在 manifest.json"app-plus" -> "distribute" -> "android" 节点下,确认 "permissionExternalStorage" 相关配置是否被显式设置。可以尝试明确将其配置为仅请求最低必要权限或完全禁用。例如:

    "permissionExternalStorage": {
        "request": "none", // 或根据需求设置为 "minimal" 等
        "scope": "none"
    }
回到顶部