You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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中添加(无则创建文件):
    org.gradle.java.home=C:\\Program Files\\Java\\jdk-17.x.x
    
    替换为你的JDK 17实际安装路径
  • 清理缓存并重新构建:
    ./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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 13:10:11