uniapp targetsdkversion 30如何设置或适配
在uniapp中如何设置或适配targetsdkversion 30?按照Google Play的要求需要将targetSdkVersion升级到30,但在uniapp项目中找不到明确的配置位置。请问具体应该在哪里修改这个配置?是在manifest.json中设置还是需要修改原生平台的配置文件?升级后会不会对现有功能产生影响?
在manifest.json中配置app-plus节点,添加targetSdkVersion为30。同时需适配Android 10以上权限策略,如存储权限需使用MediaStore API。
在 UniApp 中适配 targetSdkVersion 30(Android 11)时,主要涉及权限策略变更和隐私保护要求。以下是关键步骤和配置方法:
1. 修改 manifest.json 文件
在 UniApp 项目的 manifest.json 中配置 Android 设置:
{
"app-plus": {
"distribute": {
"android": {
"targetSdkVersion": 30
}
}
}
}
2. 权限适配要点
-
分区存储(Scoped Storage):
若应用需访问共享文件(如图库),使用uni.chooseImage等 API 替代直接文件路径操作。
如需访问媒体文件,声明READ_EXTERNAL_STORAGE权限,并适配 Android 10+ 的媒体位置权限(需动态申请ACCESS_MEDIA_LOCATION)。 -
后台位置权限:
若应用在后台获取位置,需声明ACCESS_BACKGROUND_LOCATION权限,并在权限申请时向用户明确说明用途。
3. 包可见性(Android 11 新增)
若应用需查询或交互其他应用(如获取应用列表),在 manifest.json 中添加 <queries> 声明:
{
"app-plus": {
"android": {
"queries": [
{
"package": "com.tencent.mm" // 例如需与微信交互
}
]
}
}
}
4. 动态权限申请
在代码中检查并申请敏感权限(如位置、存储):
// 示例:检查相机权限
uni.authorize({
scope: 'scope.camera',
success: () => { /* 授权成功 */ },
fail: () => { /* 引导用户手动开启 */ }
});
5. 注意事项
- 测试所有涉及存储、位置、相机等功能的场景,确保在 Android 11 设备上正常使用。
- 若使用第三方 SDK,确认其已适配 Android 11。
- 提交应用市场前,务必在真机完成兼容性测试。
通过以上配置和适配,可确保应用符合 Android 11 规范,避免安装或运行异常。

