Expo构建APK失败求助:React Native项目编译报错
React Native + Expo SDK升级后APK构建失败问题
问题背景
多次成功构建并发布至Google Play的React Native项目,升级Expo SDK新版本后无法正常构建APK。
当前环境配置
项目级build.gradle配置
buildscript { ext { buildToolsVersion = findProperty('android.buildToolsVersion') ?: '34.0.0' minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '21') compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '34') targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '34') if (findProperty('android.kotlinVersion')) { kotlinVersion = findProperty('android.kotlinVersion') } frescoVersion = findProperty('expo.frescoVersion') ?: '2.5.0' // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. ndkVersion = "23.1.7779620" } repositories { google() mavenCentral() } dependencies { classpath('com.android.tools.build:gradle:7.4.0') classpath('com.facebook.react:react-native-gradle-plugin') classpath('org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10') } }
gradle-wrapper.properties配置
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https://services.gradle.org/distributions/gradle-8.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
JDK版本
JDK 21.0.2
报错信息
报错1:datetimepicker模块编译失败
What went wrong: Execution failed for task ':react-native-community_datetimepicker:compileDebugJavaWithJavac'. > Could not resolve all files for configuration ':react-native-community_datetimepicker:androidJdkImage'. > Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}. > Execution failed for JdkImageTransform: \\Local\\Android\\Sdk\\platforms\\android-34\\core-for-system-modules.jar. > Error while executing process C:\\Program Files\\Java\\jdk-21\\bin\\jlink.exe with arguments {--module-path .gradle\\caches\\transforms-3\\7b8607e7136a0bf35e15dfad6551fa85\\transformed\\output\\temp\\jmod --add-modules java.base --output .gradle\\caches\\transforms-3\\7b8607e7136a0bf35e15dfad6551fa85\\transformed\\output\\jdkImage --disable-plugin system-modules}
报错2:expo-updates模块Kotlin编译失败
What went wrong: Execution failed for task ':expo-updates:kaptGenerateStubsDebugKotlin'. > A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction > Internal compiler error. See log for more details
已尝试的解决方案
- 更换
kotlin-gradle-plugin版本 - 调整
com.android.tools.build:gradle版本 - 修改gradle的
distributionUrl - 降级JDK至17后又改回21(降级时出现更多报错)
解决方案
1. 对齐AGP、Gradle、Kotlin版本兼容性
当前AGP 7.4.0与Gradle 8.5不兼容,AGP 7.4.x最高支持Gradle 7.5,同时Kotlin版本需与AGP匹配:
- 修改
gradle-wrapper.properties中的Gradle版本:distributionUrl=https://services.gradle.org/distributions/gradle-7.5-bin.zip - 调整
build.gradle中的Kotlin插件版本为AGP 7.4.0适配的1.7.20:classpath('org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20')
2. 固定使用JDK 17(Expo SDK推荐版本)
Expo SDK对JDK 21的支持不完善,建议切换至JDK 17:
- 在项目根目录的
gradle.properties中添加(无则创建文件):
替换为你的JDK 17实际安装路径org.gradle.java.home=C:\\Program Files\\Java\\jdk-17.x.x - 清理缓存并重新构建:
./gradlew clean build --refresh-dependencies
3. 升级datetimepicker至兼容版本
react-native-community_datetimepicker可能与新Expo SDK版本不兼容,执行升级:
npx expo install @react-native-community/datetimepicker
4. 修复expo-updates编译问题
若仍有相关报错,执行以下操作:
- 升级
expo-updates至与当前Expo SDK匹配的版本:npx expo install expo-updates - 删除项目根目录下的
.gradle、android/.gradle文件夹,清理Kotlin编译缓存后重新构建。
内容的提问来源于stack exchange,提问作者Clair Penido
相关产品推荐
相关产品推荐

