React Native “npx expo run:android”命令不能在Expo中运行

4uqofj5v  于 2023-11-21  发布在  React
关注(0)|答案(2)|浏览(232)

npx expo run:android不工作。没有我没有尝试过的方法。我该怎么办?谢谢。

PS C:\Users\abc\Desktop\my-app> npx expo run:android
› Building app...
Configuration on demand is an incubating feature.

FAILURE: Build failed with an exception.

* Where:
Script 'C:\Users\abc\Desktop\my-app\node_modules\expo-modules-autolinking\scripts\android\autolinking_implementation.gradle' line: 356

* What went wrong:
A problem occurred evaluating project ':expo'.
> A problem occurred configuring project ':expo-modules-core'.
   > Failed to notify project evaluation listener.
      > No enum constant org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.JvmTargetValidationMode.WARN¦NG
      > KotlinJvmAndroidCompilation with name 'debugAndroidTest' not found.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BU¦LD FAILED in 13s
5 actionable tasks: 5 up-to-date
Error: C:\Users\abc\Desktop\my-app\android\gradlew.bat exited with non-zero code: 1
Error: C:\Users\abc\Desktop\my-app\android\gradlew.bat exited with non-zero code: 1
    at ChildProcess.completionListener (C:\Users\abc\Desktop\my-app\node_modules\@expo\spawn-async\build\spawnAsync.js:52:23)
    at Object.onceWrapper (node:events:632:26)
    at ChildProcess.emit (node:events:517:28)
    at cp.emit (C:\Users\abc\Desktop\my-app\node_modules\cross-spawn\lib\enoent.js:34:29)
    at maybeClose (node:internal/child_process:1098:16)
    at ChildProcess._handle.onexit (node:internal/child_process:303:5)
    ...
    at Object.spawnAsync [as default] (C:\Users\abc\Desktop\my-app\node_modules\@expo\spawn-async\build\spawnAsync.js:17:21)
    at spawnGradleAsync (C:\Users\abc\Desktop\my-app\node_modules\@expo\cli\build\src\start\platforms\android\gradle.js:72:46)
    at Object.assembleAsync (C:\Users\abc\Desktop\my-app\node_modules\@expo\cli\build\src\start\platforms\android\gradle.js:52:18)
    at runAndroidAsync (C:\Users\abc\Desktop\my-app\node_modules\@expo\cli\build\src\run\android\runAndroidAsync.js:36:24)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

字符串

zsbz8rwp

zsbz8rwp1#

我用expo-build-properties将Kotlin版本升级到1.9.0,它工作了。
展会名称:https://docs.expo.dev/versions/latest/sdk/build-properties/
app.json

{
  "expo": {

    ...

    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "kotlinVersion": "1.9.0"
          }
        }
      ]
    ]
  }
}

字符串

piwo6bdm

piwo6bdm2#

您在Gradle脚本中遇到了Kotlin配置问题,特别是枚举常量JvmTargetValidationMode和缺少KotlinJvmAndroidCompilation
为了确保这一点,请检查Gradle配置中的Kotlin插件是否为最新,以及您的项目是否使用了兼容版本的Gradle和Android Gradle插件(./gradlew wrapper --gradle-version=<latest_version>,请参阅Gradle releases)。如果使用Android Studio(./gradlew clean),请清理项目并使缓存无效。尝试重建项目。
如果问题仍然存在,请考虑检查错误中提到的特定行(autolinking_implementation.gradle的第356行),以查看是否存在语法错误或脚本问题。
另见“Expo build Troubleshoot build errors and crashes
上面提到的是用于排除npx expo run:android命令的故障。
如果你在当地建造:

  • 确保项目中的Kotlin版本与您正在使用的Expo SDK版本兼容。该错误表明Kotlin的预期属性与项目中定义的属性可能不匹配。
  • 由于错误指向autolinking_implementation.gradle脚本中的一行,请检查该行是否存在与Kotlin配置相关的任何问题。它可能引用了与安装的Kotlin版本不匹配的Kotlin枚举或配置。
  • 执行带有--stacktrace选项的build命令,以获取错误的详细跟踪信息,这可以提供一些线索。
npx expo run:android --stacktrace

字符串
请记住,在进行更新后,通过运行以下命令将更改与项目同步:

npx expo start --clear


请注意,npx eas build -p android --local命令用于EAS Build,这与Expo CLI的run:android命令不同。run:android命令旨在在本地Android模拟器或设备上运行您的项目,它应该与正确的配置和相关工具的兼容版本一起工作。
OP Blogger Klikanswer证实了用expo-build-properties将Kotlin版本升级到1. 9. 0就足够了。
使用expo-build-properties配置原生构建属性(如Kotlin版本)是管理Expo项目内兼容性的绝佳方法。
为了将来的参考或其他面临类似问题的人,如果尚未将expo-build-properties添加到项目中,则可以通过安装expo-build-properties来应用这些更改:

expo install expo-build-properties


然后在app.jsonapp.config.js中配置Kotlin版本:

{
  "expo": {
    ...
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "kotlinVersion": "1.9.0"
          }
        }
      ]
    ]
  }
}


参见“Expo BuildProperties“。
更改配置后,重新生成项目:

npx expo run:android


该方法允许对本机构建过程进行细粒度控制,从而更容易与Expo项目所依赖的Kotlin和其他构建工具的必要版本保持一致。

相关问题