java - 升级到 react-native 版本 0.60.4 后 react-native run-android 出错

标签 java android react-native gradle android-gradle-plugin

我正在使用现有应用程序将 react-native 从 0.59.5 升级到 0.60.4。但面临如下问题

* Where:
Build file '/home/bingl/Projects/blackstar/frontend/android/app/build.gradle'

* What went wrong:
Could not compile build file '/home/bingl/Projects/blackstar/frontend/android/app/build.gradle'.
> startup failed:
  General error during semantic analysis: Unsupported class file major version 57

  java.lang.IllegalArgumentException: Unsupported class file major version 57
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:184)
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:166)
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:152)
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:273)
    at org.codehaus.groovy.ast.decompiled.AsmDecompiler.parseClass(AsmDecompiler.java:81)
    at org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeReso

我的 build.gradle 是
android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        applicationId "com.frontend"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
        }
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }
    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code as described here:
            // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
            def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3, "x86_64": 4]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }

我完全不知道这个错误是关于什么的,也找不到太多有用的文章。请帮帮我。

最佳答案

对于那些在这里 java.lang.IllegalArgumentException: Unsupported class file major version 60 的人
原因之一是:
已安装 Java 版本 16,但 react-native 尚不支持。
所以对于 MacOS,

cd /Library/Java/JavaVirtualMachines
ls
  • 检查可用的 JDK
  • 使用此删除 jdk-16(如果存在),sudo rm -rf jdk-16.jdk/

  • 基本上,您可以删除 adoptopenjdk-8.jdk 以外的 JDK。如果您关注 React-Native Env Setup 将会出现.

    关于java - 升级到 react-native 版本 0.60.4 后 react-native run-android 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57338968/

    相关文章:

    android - 带有可点击按钮的自定义 PreferenceScreen

    java - 如何在 Android 中执行 Java HTTP GET 调用并等待响应?

    android - android 上的多个 mapbox 实例

    javascript - 无法在react-native中加载图像

    networking - 用于 API 处理的 React Native 最佳实践

    java - 等于持久对象

    java - Log4j 2.x 如何实现惰性参数求值?

    java - 在 fragment 中检查已更改监听器的 radio 组

    java - 优化使用 CPLEX Java 实现高吞吐量

    image - 将 native 上传图像 react 为文件