uni-app 新版本【4.29】AndroidManifest.xml无法移除权限
uni-app 新版本【4.29】AndroidManifest.xml无法移除权限
类别 | 信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Mac |
PC操作系统版本 | sonome 14.6.1 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 4.29 |
手机系统 | 全部 |
手机厂商 | 华为 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
所有
此问题是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
uni230d960
除了移除,可以支持替换的语法吗?
回复 JiYis: 替换就是移除一条,新增一条。
请问一下这是个bug吗,要怎么处理
云端打包环境升级引起的问题,正在解决中
回复 DCloud_App_Array:刚刚也遇到了,位置权限无法移除,请问什么时候能修复好?
回复 只是向上走: 已修复,重新提交云端打包即可。
我也遇到了
我的4.29版本,云打包,依旧无法移除
老哥们,你们的解决了吗
<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"/>
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官方文档或社区论坛,寻求更具体的解决方案。