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

使用expo run:android构建兼容错误,但Android Studio构建成功

问题描述

通过Android Studio运行Android项目时,构建可成功完成(仅会因React服务器未运行报错),但执行expo run:android(本质是执行相同构建命令并启动React开发服务器)时,出现构建兼容错误,具体错误日志如下。

环境信息

系统:
  操作系统: macOS 14.0
  CPU: (8) arm64 Apple M2
  内存: 91.08 MB / 8.00 GB
  Shell: 5.9 - /bin/zsh
二进制工具:
  Node: 18.15.0 - ~/Library/Caches/fnm_multishells/74130_1692514877370/bin/node
  npm: 9.5.0 - ~/Library/Caches/fnm_multishells/74130_1692514877370/bin/npm
  pnpm: 8.6.12 - ~/Library/pnpm/pnpm
SDK:
  iOS SDK:
    平台: DriverKit 23.0, iOS 17.0, macOS 14.0, tvOS 17.0, visionOS 1.0, watchOS 10.0
  Android SDK:
    API级别: 28, 31, 33
    构建工具: 27.0.3, 28.0.3, 30.0.3, 33.0.0, 33.0.2, 34.0.0
    系统镜像: android-33 | Google APIs ARM 64 v8a, android-33 | Google Play ARM 64 v8a
语言:
  Bash: 3.2.57 - /bin/bash
  Java: 1.8.0_362 - /usr/bin/javac
浏览器:
  Chrome: 116.0.5845.96
  Safari: 17.0
npm依赖包:
  @babel/core: ^7.22.10 => 7.22.10 
  @tsconfig/react-native: ^3.0.2 => 3.0.2 
  @types/react: ^18.2.20 => 18.2.20 
  @types/react-native-shared-group-preferences: ^1.1.1 => 1.1.1 
  @typescript-eslint/eslint-plugin: ^6.4.0 => 6.4.0 
  @typescript-eslint/parser: ^6.4.0 => 6.4.0 
  eslint: ^8.47.0 => 8.47.0 
  eslint-config-prettier: ^9.0.0 => 9.0.0 
  eslint-plugin-prettier: ^5.0.0 => 5.0.0 
  eslint-plugin-react: ^7.33.2 => 7.33.2 
  eslint-plugin-simple-import-sort: ^10.0.0 => 10.0.0 
  expo: ~49.0.7 => 49.0.7 
  expo-build-properties: ~0.8.3 => 0.8.3 
  expo-splash-screen: ~0.20.5 => 0.20.5 
  expo-status-bar: ~1.6.0 => 1.6.0 
  expo-system-ui: ^2.4.0 => 2.4.0 
  prettier: ^3.0.2 => 3.0.2 
  react: 18.2.0 => 18.2.0 
  react-native: 0.72.4 => 0.72.4 
  react-native-keyboard-aware-scroll-view: ^0.9.5 => 0.9.5 
  react-native-really-awesome-button: ^2.0.4 => 2.0.4 
  react-native-root-toast: ^3.4.1 => 3.4.1 
  react-native-shared-group-preferences: ^1.1.23 => 1.1.23 
  react-native-widget-bridge: ^0.1.3 => 0.1.3 
  typescript: ^5.1.6 => 5.1.6

错误日志

󰀵  󱑍 14:35  ﱮ RNWidget    main ✘!?+74 via 🍞 v0.7.3 via  v18.15.0 
 ✗  bun run android                              
$ expo run:android
› 正在构建应用...
Configuration on demand is an incubating feature.

FAILURE: 构建失败,出现异常。

* 错误原因:
配置根项目 'React Native Widget' 时出现问题。
> 无法确定null的依赖项。
   > 无法解析配置 ':classpath' 的所有任务依赖项。
      > 无法解析 com.android.tools.build:gradle:7.4.2。
        被以下项目依赖:
            project :
         > 未找到匹配的 com.android.tools.build:gradle:7.4.2 变体。消费者配置为寻找运行时使用的库,兼容Java 8,打包为jar,依赖项外部声明,以及属性 'org.gradle.plugin.api-version' 值为 '8.0.1',但:
             - 变体 'apiElements' 具备 com.android.tools.build:gradle:7.4.2 能力,声明为库,打包为jar,依赖项外部声明:
                 - 不兼容,因为该组件声明为编译时使用,兼容Java 11,而消费者需要运行时使用、兼容Java 8的组件
                 - 其他兼容属性:
                     - 未提及 org.gradle.plugin.api-version (要求值为 '8.0.1')
             - 变体 'javadocElements' 具备 com.android.tools.build:gradle:7.4.2 能力,声明为运行时使用的组件,依赖项外部声明:
                 - 不兼容,因为该组件为文档,而消费者需要库
                 - 其他兼容属性:
                     - 未提及目标Java版本 (要求兼容Java 8)
                     - 未提及元素打包方式 (要求打包为jar)
                     - 未提及 org.gradle.plugin.api-version (要求值为 '8.0.1')
             - 变体 'runtimeElements' 具备 com.android.tools.build:gradle:7.4.2 能力,声明为运行时使用的库,打包为jar,依赖项外部声明:
                 - 不兼容,因为该组件兼容Java 11,而消费者需要兼容Java 8的组件
                 - 其他兼容属性:
                     - 未提及 org.gradle.plugin.api-version (要求值为 '8.0.1')
             - 变体 'sourcesElements' 具备 com.android.tools.build:gradle:7.4.2 能力,声明为运行时使用的组件,依赖项外部声明:
                 - 不兼容,因为该组件为文档,而消费者需要库
                 - 其他兼容属性:
                     - 未提及目标Java版本 (要求兼容Java 8)
                     - 未提及元素打包方式 (要求打包为jar)
                     - 未提及 org.gradle.plugin.api-version (要求值为 '8.0.1')
      > 无法解析 com.facebook.react:react-native-gradle-plugin。
        被以下项目依赖:
            project :
         > 未找到匹配的 project :gradle-plugin 变体。消费者配置为寻找运行时使用的库,兼容Java 8,打包为jar,依赖项外部声明,以及属性 'org.gradle.plugin.api-version' 值为 '8.0.1',但:
             - 变体 'apiElements' 具备 com.facebook.react:react-native-gradle-plugin:unspecified 能力,声明为库,打包为jar,依赖项外部声明:
                 - 不兼容,因为该组件声明为编译时使用,兼容Java 11,而消费者需要运行时使用、兼容Java 8的组件
                 - 其他兼容属性:
                     - 未提及 org.gradle.plugin.api-version (要求值为 '8.0.1')
             - 变体 'mainSourceElements' 具备 com.facebook.react:react-native-gradle-plugin:unspecified 能力,声明为组件,依赖项外部声明:
                 - 不兼容,因为该组件属于'verification'类别,而消费者需要库
                 - 其他兼容属性:
                     - 未提及目标Java版本 (要求兼容Java 8)
                     - 未提及元素打包方式 (要求打包为jar)
                     - 未提及 org.gradle.plugin.api-version (要求值为 '8.0.1')
                     - 未提及使用场景 (要求运行时)
             - 变体 'runtimeElements' 具备 com.facebook.react:react-native-gradle-plugin:unspecified 能力,声明为运行时使用的库,打包为jar,依赖项外部声明:
                 - 不兼容,因为该组件兼容Java 11,而消费者需要兼容Java 8的组件
                 - 其他兼容属性:
                     - 未提及 org.gradle.plugin.api-version (要求值为 '8.0.1')
             - 变体 'testResultsElementsForTest' 具备 com.facebook.react:react-native-gradle-plugin:unspecified 能力:
                 - 不兼容,因为该组件属于'verification'类别,而消费者需要库
                 - 其他兼容属性:
                     - 未提及依赖查找方式 (要求依赖项外部声明)
                     - 未提及目标Java版本 (要求兼容Java 8)
                     - 未提及元素打包方式 (要求打包为jar)
                     - 未提及 org.gradle.plugin.api-version (要求值为 '8.0.1')
                     - 未提及使用场景 (要求运行时)

* 建议尝试:
> 使用 --stacktrace 选项获取堆栈跟踪。
> 使用 --info 或 --debug 选项获取更多日志输出。
> 使用 --scan 选项获取完整分析信息。

* 获取更多帮助请访问 https://help.gradle.org

解决方案

1. 升级Java版本至11或更高

错误核心是当前Java 8与Gradle插件7.4.2要求的Java 11不兼容。操作步骤:

  • 安装OpenJDK 11或Oracle JDK 11
  • 在项目根目录的android/gradle.properties中添加配置,指定JDK路径:
    org.gradle.java.home=/path/to/your/jdk11
    
  • 或直接将环境变量JAVA_HOME指向JDK 11的安装路径

2. 对齐Gradle与Android Gradle Plugin版本

当前Gradle版本8.0.1和Android Gradle Plugin(AGP)7.4.2不匹配,可二选一操作:

  • 降级Gradle版本:修改android/gradle/wrapper/gradle-wrapper.properties中的distributionUrl为适配AGP 7.4.2的Gradle 7.5:
    distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
    
  • 升级AGP版本:在android/build.gradle的buildscript块中,将AGP版本改为与Gradle 8.0.1兼容的版本(如7.4.3):
    buildscript {
        dependencies {
            classpath 'com.android.tools.build:gradle:7.4.3'
        }
    }
    

3. 清理缓存并重新构建

完成上述修改后,执行以下命令清理缓存并重新构建:

cd android
./gradlew clean
cd ..
expo run:android

内容的提问来源于stack exchange,提问作者ImBIOS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:07:02