使用Cordova添加Android存储权限后构建失败,如何解决?
Cordova Android添加存储权限后构建失败(退出码1)解决办法
可能原因及对应解决方案
1. 清理构建缓存与重建平台
缓存冲突是这类问题的常见诱因,直接执行以下操作:
- 清理当前构建缓存:
cordova clean android - 删除旧的Android平台目录后重新添加:
cordova platform remove android cordova platform add android@latest
2. 修正权限声明与适配Android版本
Android 10+引入了Scoped Storage,13+又更新了存储权限模型,直接声明旧权限可能触发构建冲突。修改config.xml中的Android平台配置:
<platform name="android"> <allow-intent href="market:*" /> <preference name="AndroidPersistentFileLocation" value="Compatibility" /> <!-- 启用旧存储模型兼容(Android 10+) --> <edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application"> <application android:requestLegacyExternalStorage="true" /> </edit-config> <!-- 为Android 13以下版本声明传统存储权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <!-- Android 13+所需的媒体权限(按需添加) --> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> </platform>
3. 检查插件权限冲突
部分Cordova插件(如文件操作类插件)会自动声明存储权限,重复手动声明会导致Gradle合并Manifest时出错:
- 执行
cordova plugin ls查看已安装插件,确认是否有插件已包含存储权限 - 如果存在冲突,移除手动添加的权限声明,依赖插件自动注入的权限
4. 获取详细错误日志定位问题
只看退出码1无法确定具体错误,执行带日志的构建命令:
cordova build android --verbose
查看输出中的Gradle错误信息,比如Manifest合并失败、依赖缺失等,再针对性解决。
内容的提问来源于stack exchange,提问作者Dee Vyne
相关产品推荐
相关产品推荐

