• 问题描述
  • 错误日志
  • 原因分析
  • 解决方案(分步操作)
  • 验证方式
  • 经验总结
  • 兼容性表格

问题背景

最近在升级 React Native 项目时,尝试将 compileSdkVersion 升级到 Android 36(API 36 / Android 16),结果编译直接爆炸:

Execution failed for task ':react-native-svg:compileDebugJavaWithJavac'.
> Could not resolve all files for configuration ':react-native-svg:androidJdkImage'.
   > Failed to transform core-for-system-modules.jar ...
      > Execution failed for JdkImageTransform: ...android-36\core-for-system-modules.jar
         > Error while executing process D:\jdk17\jdk\bin\jlink.exe ...

关键报错点

  • android-36/core-for-system-modules.jar
  • jlink.exe(来自 JDK 17)

问题复现

// android/app/build.gradle
android {
    compileSdkVersion 36
    targetSdkVersion 36
}

使用 JDK 17 编译 → 直接失败!


根本原因分析

组件 问题
Android 36 引入了 系统模块化core-for-system-modules.jar 是 JMOD 格式
JDK 17 的 jlink 不认识 Android 36 的新模块结构 → JdkImageTransform 崩溃
AGP(Android Gradle Plugin) 8.5+ 才正式支持 SDK 36

官方结论
SDK 36 必须搭配 JDK 21+
来源:Android 16 发布说明


解决方案(亲测 100% 有效)

步骤 1:升级 JDK 到 21

  1. 下载 Temurin JDK 21(推荐)
    → https://adoptium.net/temurin/releases/?version=21

  2. 安装到 D:\jdk-21

  3. 设置环境变量(Windows):

    setx JAVA_HOME "D:\jdk-21"
    setx PATH "%JAVA_HOME%\bin;%PATH%"
    

    或者直接在android项目里面指定JDK,就不用改环境变量了,可能其他项目不能用JDK21,改环境变量会产生全局影响。

在android目录下的gradle.properties中指定JDK,如下:
在这里插入图片描述

  1. 验证:
    java -version
    # 输出:openjdk version "21.x.x"
    

步骤 2:升级 AGP + Gradle

android/build.gradle
buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:8.6.0'  // 必须 ≥8.5
    }
}
gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip

步骤 3:配置 Android Studio 使用 JDK 21

  1. 打开 Android Studio
  2. File → Project Structure → SDK Location
  3. Gradle JDK 选择 JDK 21
  4. 或在 gradle.properties 添加:
    org.gradle.java.home=D:/jdk-21
    

步骤 4:安装 SDK 36 平台

  1. 打开 SDK Manager
  2. 勾选:
    • Android SDK Platform 36
    • Android SDK Build-Tools 36.0.0

步骤 5:清理缓存 + 重新编译

# 删除 Gradle 缓存(关键!)
rmdir /s "%USERPROFILE%\.gradle\caches"

# 清理项目
cd android
.\gradlew clean
cd ..

# 重新编译
npx react-native run-android

成功! 编译通过,react-native-svgslider 等库全部正常。


验证构建成功

.\gradlew :app:properties | findstr compileSdk
# 输出:compileSdkVersion: 36

APK 安装到 Android 16 模拟器,运行正常。


兼容性对照表(建议收藏)

组件 必须版本
compileSdk / targetSdk 36
JDK 21+(推荐 21.0.3)
AGP 8.6.0+(8.5 起步)
Gradle Wrapper 8.14.3+
Build-Tools 36.0.0
React Native ≥ 0.74(推荐 0.75+)

常见错误 & 一句话修复

错误 修复
JdkImageTransform 失败 换 JDK 21
Failed to find Build Tools 36 安装 Build-Tools 36
AGP not compatible with SDK 36 升级 AGP 到 8.6+

经验总结

  1. SDK 36 = JDK 21+,这是硬性要求,不能绕过。
  2. 清理 .gradle/caches 是万能药,尤其换 JDK 后。
  3. React Native 项目升级 SDK 前,先查 RN 官方升级指南
  4. npx react-native doctor 是排查神器。

参考资料


恭喜你!现在你的 RN 项目已经成功运行在 Android 16 上了

如果你也遇到类似问题,直接复制本套方案,99% 能解决!
点赞 + 收藏,遇到问题随时翻!

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐