Cordova编译报错:找不到匹配的dialogCornerRadius资源
嘿,这个问题我太熟了!你执行cordova build时碰到的Error: No resource found that matches the given name (at 'dialogCornerRadius' with value '?android:attr/dialogCornerRadius')错误,确实是Android P(SDK 27)预览版发布后引发的兼容性问题,给你几个靠谱的解决办法:
解决Cordova Build时的dialogCornerRadius资源错误
方案一:重新添加指定稳定版本的Android平台
这是最直接的办法,能彻底避开预览版SDK的干扰:
- 先查看当前项目的平台列表:
cordova platform ls - 移除当前的Android平台:
cordova platform remove android - 添加对应SDK 26(Android 8.0)稳定版的Android平台:
这个版本完全适配稳定版SDK,不会触发预览版的属性问题。cordova platform add android@7.0.0
方案二:直接修改项目的gradle配置
如果不想重新添加平台,手动改配置也能搞定:
- 打开项目根目录下的
platforms/android/build.gradle文件 - 找到
compileSdkVersion和targetSdkVersion的配置项,把它们的值从27修改为26 - 同时检查
dependencies区块里的com.android.support:appcompat-v7版本,确保是26.x.x的稳定版,比如:dependencies { compile 'com.android.support:appcompat-v7:26.1.0' } - 保存文件后,执行清理和重新构建:
cordova clean && cordova build android
方案三:禁用Android P预览版SDK
如果你是用Android Studio管理SDK的,可以通过SDK Manager取消Android P(SDK 27)预览版的下载,再清理缓存重新构建:
- 打开Android Studio的SDK Manager,取消勾选“Android Pie Preview”相关组件
- 回到终端执行清理命令:
cordova clean - 最后重新构建项目:
cordova build android
问题根源说明
?android:attr/dialogCornerRadius是Android P(API 27)才新增的系统属性,你的项目依赖库(比如appcompat)可能自动拉取了预览版SDK的资源,导致在基于稳定版SDK编译时找不到这个属性。只要把编译目标切回稳定的SDK版本,就能彻底解决这个问题。
内容的提问来源于stack exchange,提问作者WartSemola
相关产品推荐
相关产品推荐

