You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cordova 10中Target SDK Version 30不兼容问题的解决方案咨询

解决Cordova 10中Target SDK Version 30不支持及API 30存储权限问题

首先,咱们先搞定最直接的「Target SDK Version is not supported in Cordova 10」错误——这个问题本质是你当前搭配的Cordova Android平台版本太低,不支持API 30。Cordova 10本身是可以兼容支持API 30的Android平台包的,你只需要升级你的cordova-android依赖:

  • 先移除旧的Android平台:
    cordova platform remove android
    
  • 安装支持API 30的cordova-android稳定版本(比如10.x系列,和Cordova 10完美适配):
    cordova platform add android@10.1.1
    
    完成这一步后,你就能在config.xml里把android-targetSdkVersion设为30,不会再弹出版本不支持的错误。

接下来是API 30的存储权限难题——没错,API 30彻底废弃了android:requestLegacyExternalStorage属性,必须适配Scoped Storage规则。这里给你几个实用方案,根据你的应用场景选择:

1. 迁移文件到应用专属目录(优先推荐)

如果你的应用只需要访问自身生成的文件,完全可以把文件迁移到应用专属存储目录:

  • 内部专属目录:对应cordova.file.dataDirectory,不需要任何权限,只有你的应用能访问。
  • 外部专属目录:对应cordova.file.externalFilesDirectory,同样不需要额外权限,卸载应用时会自动清理这些文件。
    你只需要修改代码里的文件路径,把之前操作外部存储根目录的逻辑切换到这两个目录下,就能绕过Scoped Storage的限制。

2. 用Media Store API访问共享媒体

如果你的应用需要访问相册、视频库这类共享媒体文件,就得改用Media Store API操作,不能直接读写文件路径了。你可以升级cordova-plugin-file到最新版本,或者使用专门适配API 30的媒体访问插件,它们已经封装好了Media Store的调用逻辑。

3. 申请MANAGE_EXTERNAL_STORAGE权限(谨慎使用)

如果你的应用是文件管理器这类需要全局访问存储的工具,可以申请MANAGE_EXTERNAL_STORAGE权限,但要注意:这个权限需要在Google Play上进行特殊审核,只有符合特定场景的应用才会通过。
要添加这个权限,在config.xml里写入:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

然后在代码中主动发起权限请求,务必确认你的应用符合Google的权限使用规范,否则会被拒审。

最后别忘了清理掉之前添加的android:requestLegacyExternalStorage="true"配置,API 30已经完全忽略它了,留着也没用。

内容的提问来源于stack exchange,提问作者Kirubha karthi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 02:07:37