升级Android SDK至30后react-native-agora等包compileDebugJavaWithJavac编译失败如何解决
问题根因
该错误本质是Android Gradle 插件(AGP)版本与编译SDK版本、第三方原生依赖的构建配置不兼容导致的:
- 你当前使用的AGP版本是
3.6.1,该版本对compileSdk 30、buildTools 30.0.3的适配性不足,且匹配的Gradle 5.x版本在处理原生依赖的生成资源目录逻辑上存在缺陷,才会触发属性查询未完成的报错 - 项目引入的第三方原生依赖(如react-native-agora、react-native-image-crop-picker)默认的构建配置适配旧版compileSdk,你全局升级compileSdk后,依赖本身的构建逻辑没有同步适配,就会循环出现不同依赖的编译错误
可行解决方案
方案一:永久适配(推荐)
按以下步骤升级构建配置,完全适配compileSdk 30:
- 升级AGP版本,修改项目根目录
android/build.gradle的依赖配置:
dependencies { // 把原有3.6.1的AGP版本替换为4.1.3 classpath('com.android.tools.build:gradle:4.1.3') classpath 'com.google.gms:google-services:4.3.10' }
- 同步升级Gradle版本,修改
android/gradle/wrapper/gradle-wrapper.properties的distributionUrl配置:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
- 新增全局编译配置覆盖,避免第三方依赖的构建配置和全局冲突,在根目录
android/build.gradle的ext块下新增子项目统一配置:
buildscript { ext { // 原有配置保留 buildToolsVersion = "30.0.3" minSdkVersion = 21 compileSdkVersion = 30 targetSdkVersion = 30 supportLibVersion = "28.0.0" googlePlayServicesAuthVersion = "17.0.0" // 新增agora版本指定 agoraSdkVersion = "3.7.0" } // ... 原有repositories等配置保留 } // 新增以下全局配置 allprojects { afterEvaluate { project -> if (project.hasProperty("android")) { android { compileSdkVersion 30 buildToolsVersion "30.0.3" } } } }
- 清空缓存重新编译:
- 进入android目录执行
./gradlew clean(Windows系统执行gradlew clean) - 删除项目根目录的node_modules文件夹、package-lock.json/yarn.lock文件
- 执行
npm install重新安装依赖 - 执行
npx react-native run-android启动项目
方案二:临时兼容
如果不需要强制使用compileSdk 30,可以直接把全局build配置回退到升级前的版本即可快速解决问题:
buildToolsVersion = "29.0.2" compileSdkVersion = 29 targetSdkVersion = 29
补充注意:你使用的启动命令有误,npx react-native start是启动Metro打包服务的命令,启动安卓项目的正确命令为npx react-native run-android
内容的提问来源于stack exchange,提问作者keerthana
相关产品推荐
相关产品推荐

