uniapp targetsdkversion 30如何设置或适配

在uniapp中如何设置或适配targetsdkversion 30?按照Google Play的要求需要将targetSdkVersion升级到30,但在uniapp项目中找不到明确的配置位置。请问具体应该在哪里修改这个配置?是在manifest.json中设置还是需要修改原生平台的配置文件?升级后会不会对现有功能产生影响?

2 回复

在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 规范,避免安装或运行异常。

回到顶部