uni-app 新版本【4.29】AndroidManifest.xml无法移除权限

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app 新版本【4.29】AndroidManifest.xml无法移除权限

类别 信息
产品分类 uniapp/App
PC开发环境 Mac
PC操作系统版本 sonome 14.6.1
HBuilderX类型 正式
HBuilderX版本 4.29
手机系统 全部
手机厂商 华为
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

所有

image image image image image image image


24 回复

此问题是4.29版本更新云端打包环境gradle8.5导致,云端打包机更新支持以下临时解决方案,请重新提交云端打包。 在manifest.json的“App权限配置”中的“强制移除的权限”列表中添加要删除的权限,如下图:


现在还是不行,是还没生效吗?

回复 x***@163.com: 提供一下appid。

回复 DCloud_App_Array: UNIF62EA37

分别打包了apk 和 aab都没生效

回复 DCloud_App_Array: 我刚刚也试过了,位置权限还是移除不了,用4.24版本打包就可以移除

回复 DCloud_App_Array: 现在还是不行,打出的包,无法上架到googlePlay了

回复 x***@163.com: 已确认是GAP更新后导致部分依赖库需要的权限无法移除导致,今晚会更新云端打包机提供以下临时解决方案: 在manifest.json的可视化界面“App权限配置”下的“强制移除的权限”列表中添加需要移除的权限。

回复 DCloud_App_Array: 是采用强制移除吗,还是采用AndroidManifest.xml remove的方式,已经试了两种方式都不行

经过测试. 按以下条件. 云打包 AAB生效了
HX 4.29
电脑Mac Sonoma 14.5 (23F79)
VUE 2
targetSdkVersion 35
minSdkVersion 21 在manifest.json 添加排除 和 AndroidManifest.xml 也添加排除
manifest.json

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.tecare.life">

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove"/>  
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove"/>  

<application>  
    <!--meta-data-->  
</application>  

</manifest>

这方法亲测有效,此时一位找了几天解决方案的人,满意离:)

请提供下appid

除了移除,可以支持替换的语法吗?

回复 JiYis: 替换就是移除一条,新增一条。

请问一下这是个bug吗,要怎么处理

云端打包环境升级引起的问题,正在解决中

回复 DCloud_App_Array:刚刚也遇到了,位置权限无法移除,请问什么时候能修复好?

回复 只是向上走: 已修复,重新提交云端打包即可。

我也遇到了

我的4.29版本,云打包,依旧无法移除
老哥们,你们的解决了吗

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="xx.xx.xx">
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove"/>

<application> </application> </manifest>

minSdkVersion 21 targetSdkVersion 34

在uni-app新版本【4.29】中,如果你发现AndroidManifest.xml中的某些权限无法被移除,这通常是由于uni-app框架的默认配置或者某些插件自动添加权限导致的。尽管直接编辑AndroidManifest.xml文件在某些情况下可以解决问题,但更好的做法是通过配置uni-app项目本身或者调整使用的插件来管理权限。

以下是一些可能的解决方案,主要通过manifest.json配置和条件编译来控制权限:

1. 使用manifest.json配置移除权限

在uni-app的manifest.json文件中,你可以尝试通过配置app-plus下的android属性来管理权限。虽然直接移除系统权限的选项有限,但你可以尝试禁用某些特定于插件的权限请求。

{
  "app-plus": {
    "android": {
      "permissions": [
        // 在这里列出你希望明确声明的权限,未列出的将尝试不添加
        // "android.permission.INTERNET",
        // 注意:直接移除系统权限可能不受支持,但可以通过这种方式管理插件权限
      ]
    }
  }
}

2. 条件编译控制权限

如果某些权限只在特定环境下需要,你可以使用条件编译来控制这些权限的添加。

<!-- 在原生代码中的AndroidManifest.xml模板中添加条件编译 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example">

    <!-- 其他配置 -->

    <!-- 条件编译示例,仅在RELEASE模式下包含某权限 -->
    <uses-permission android:name="android.permission.CAMERA" android:required="false" />
    <!-- #ifdef RELEASE -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!-- #endif -->

</manifest>

注意:直接在AndroidManifest.xml中编辑可能会在项目构建时被覆盖,因此推荐通过manifest.json或条件编译来控制。

3. 检查并更新插件

如果权限是由第三方插件添加的,检查该插件的文档或源代码,看是否有提供配置选项来禁用这些权限。此外,确保你使用的是插件的最新版本,因为插件开发者可能已经修复了权限管理相关的问题。

结论

由于直接移除Android系统权限可能受限,最佳实践是通过uni-app的配置文件和条件编译来管理权限。同时,保持插件的更新和合理配置,可以有效控制最终打包应用中包含的权限列表。如果问题依然存在,建议查阅uni-app官方文档或社区论坛,寻求更具体的解决方案。

回到顶部