uniapp 离线打包在 androidmanifest.xml 设置权限不管用怎么办?
在UniApp离线打包时,我在AndroidManifest.xml中配置了权限(比如摄像头、存储权限),但安装后实际没有生效,应用无法获取这些权限。尝试过清理项目、重新打包,甚至手动在设备设置里授权也不行。请问该如何解决?是否需要额外配置或检查哪些地方?
2 回复
检查是否在HBuilderX的manifest.json中配置了权限,离线打包需同步修改原生AndroidManifest.xml。确保权限声明在正确位置,部分权限需要动态申请。
在 UniApp 离线打包时,如果在 AndroidManifest.xml 中设置权限后无效,通常是由于配置路径或方式不正确导致的。以下是常见原因及解决方案:
1. 检查权限配置位置
确保权限已正确添加到 主模块 的 AndroidManifest.xml 中(路径示例):
<!-- 文件位置: <项目>/app/src/main/AndroidManifest.xml -->
<manifest xmlns:android="http://schemas.android.com/apache/res/android">
<!-- 添加所需权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
2. 确认权限名称正确性
- 使用完整的 Android 标准权限名称,例如:
- 网络权限:
android.permission.INTERNET - 存储权限:
android.permission.WRITE_EXTERNAL_STORAGE
- 网络权限:
3. 处理 Android 6.0+ 动态权限
若权限属于 危险权限(如相机、定位等),需在代码中动态申请:
// 在 Activity 中检查并申请权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA},
REQUEST_CODE_CAMERA);
}
4. 检查 UniApp 原生插件配置
如果权限通过原生插件引入,需确认:
- 插件中的
AndroidManifest.xml已正确声明权限 - 插件已正确集成到主项目中
5. 清理并重新构建项目
删除 build 文件夹,重新生成 APK:
cd your-project-android
./gradlew clean
./gradlew assembleRelease
6. 查看 Android Studio 的 Merge 结果
通过 Android Studio 的 Merged Manifest 功能检查最终合并的权限列表,确认配置是否生效。
注意事项
- 离线打包环境:确保使用 HBuilderX 提供的原生 SDK,并参考官方文档配置。
- 权限分组:同一组的权限只需申请一个,系统会自动授予同组权限。
通过以上步骤排查,通常可解决权限配置不生效的问题。

