Cordova 10中Target SDK Version 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.1config.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

