Cordova应用提交Play Store触发NonSdkApiUsedViolation被拒求助
问题根因
从报错日志可以明确,非SDK API调用行为来自Chromium内核的AudioManagerAndroid初始化逻辑,并非业务代码导致,触发原因有两个:
- 当前使用的Cordova Android平台版本过低,内置的WebView内核版本老旧,存在调用谷歌已限制的非公开API的问题
- 你安装的
cordova-plugin-media 5.0.3、cordova-plugin-media-capture 3.0.3版本较旧,依赖的音频处理逻辑未适配谷歌最新的API限制规则
解决方案
按优先级从高到低执行即可:
方案1:升级Cordova Android平台版本(首选,解决90%以上同类问题)
- 首先卸载旧版本安卓平台:运行命令
cordova platform remove android - 安装10.1.2及以上的稳定版安卓平台:运行命令
cordova platform add android@11.0.0,该版本内置的WebView已经完成了Android 12+的非SDK API限制适配,官方已修复AudioManager相关的违规调用问题 - 升级完成后重新编译打包测试即可
方案2:升级音频相关插件
如果升级Cordova Android平台后仍然触发警告,同步升级音频类插件:
- 先卸载旧版音频插件:
cordova plugin remove cordova-plugin-media cordova plugin remove cordova-plugin-media-capture - 安装适配后的新版插件:
cordova plugin add cordova-plugin-media@6.1.0 cordova plugin add cordova-plugin-media-capture@4.0.0 - 新版插件已移除对旧版Chromium音频逻辑的依赖,不会触发非SDK API调用警告
方案3:临时规避方案(仅用于紧急提交,不推荐长期使用)
如果暂时无法升级基础环境,可修改安卓项目的AndroidManifest.xml文件,在<application>标签下添加如下配置,临时关闭StrictMode的非SDK API检查:
注意:该方法仅可用于临时绕过审核,后续必须升级基础组件,否则Android更高版本会直接拦截应用运行
<meta-data android:name="android.os.strictmode.NON_SDK_API_DETECTION_ENABLED" android:value="false" />
内容的提问来源于stack exchange,提问作者Gery
相关产品推荐
相关产品推荐

