Android Studio修改编译版本为26时出现资源缺失错误的原因
错误原因分析
我来帮你拆解这个dialogCornerRadius资源找不到的问题根源:
系统属性版本不匹配:
android:attr/dialogCornerRadius是Android API 28(即Android 9.0)才新增的系统属性。而你的项目设置compileSdkVersion 26,这意味着编译器只能访问API 26及以下版本的系统资源和属性,自然无法识别这个高版本才有的属性。AppCompat库的内部样式冲突:你使用的
androidx.appcompat:appcompat:1.0.2库中,内置的Base.V28.Theme.AppCompat和Base.V28.Theme.AppCompat.Light样式直接引用了?android:attr/dialogCornerRadius这个API28专属属性。当你的compileSdk版本低于28时,AAPT(Android资源打包工具)在编译时找不到这个属性定义,就会抛出错误。第三方库的间接影响:你依赖的
com.theartofdev.edmodo:android-image-cropper:2.8.+图片裁剪库,可能间接依赖了更高版本的AppCompat库或者使用了API28+的资源,进一步加剧了版本不兼容的问题。
内容的提问来源于stack exchange,提问作者Alexis Montas




