Flutter android 应用程序在 kotlin 版本升级后启动失败,可能是什么问题?

问题描述 投票:0回答:1

我有一个 flutter 项目,过去一个月在 iOS 和 Android 上运行,没有出现任何问题。最近我完成了开发并构建了一个发布版本,我必须升级 kotlin,一切都很好。不过,我尝试进行一些最后的更改并再次运行调试以检查兼容性,并且应用程序在启动后立即关闭。

我有使用 iOS 的经验,但我完全不知道如何使用 Android Studio。

  • 将java降级到17?
  • 将 Gradle 升级到 8.5? (支持java 21?)
  • 我的项目中出现一些配置错误?

关于版本 63 和 61 还有其他与此非常相似的问题,但我无法根据这些问题的建议解决此问题。


$ flutter doctor

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.19.3, on macOS 14.4.1 23E224 darwin-arm64, locale en-AU)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.2)
[✓] VS Code (version 1.89.0)
[✓] Connected device (5 available)
[✓] Network resources

$ java --version

OpenJDK 64-Bit Server VM Homebrew (build 21.0.2, mixed mode, sharing)

$ ./gradlew clean -scan

Task :gradle:compileGroovy FAILED

FAILURE: Build failed with an exception.

* What went wrong:
  Execution failed for task ':gradle:compileGroovy'.
 BUG! exception in phase 'semantic analysis' in source unit '/Users/myName/Applications/Flutter/flutter/packages/flutter_tools/gradle/src/main/groovy/app_plugin_loader.groovy' 
Unsupported class file major version 65

所以看起来我正在使用Java 21,我的项目构建文件不支持它?

我为构建应用程序的发布版本所做的唯一更改是将 kotlin 版本从 1.7.10 >> 1.9.24.

从那时起,我从 7.3 >> 7.6.1 升级了 Gradle


这是我的 flutter android 配置文件:

gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

设置.gradle

pluginManagement {
    def flutterSdkPath = {
        def properties = new Properties()
        file("local.properties").withInputStream { properties.load(it) }
        def flutterSdkPath = properties.getProperty("flutter.sdk")
        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
        return flutterSdkPath
    }
    settings.ext.flutterSdkPath = flutterSdkPath()

    includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")

    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
    id "com.android.application" version '7.4.2' apply false
    // START: FlutterFire Configuration
    id "com.google.gms.google-services" version "4.3.15" apply false
    id "com.google.firebase.crashlytics" version "2.8.1" apply false
    // END: FlutterFire Configuration
    id "org.jetbrains.kotlin.android" version "1.9.24" apply false // was 1.7.10
}

build.gradle(应用程序级别)

...

android {
    namespace "..."
    compileSdk flutter.compileSdkVersion
    ndkVersion flutter.ndkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    defaultConfig {
        applicationId "..."
        minSdkVersion flutter.minSdkVersion
        targetSdkVersion flutter.targetSdkVersion
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    // Load signing information
    signingConfigs {
       release { ... }
   }

    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            signingConfig signingConfigs.release
        }
    }
}

flutter { ... }

dependencies { ... }

有什么想法吗?谢谢你

我已经尝试过了

  • flutter clean,flutter pub get,flutter run
  • 从设备中删除了应用程序
  • 重启模拟器
  • 将 Gradle 升级到更高版本 7.6
  • 修改了gradel-wrapper.properties以包含新的gradle版本
  • 降级了 kotlin(再次升级,因为这不起作用)
android flutter gradle gradle-plugin
1个回答
0
投票

Gradle 7.6 永远不会与 Java 21 一起使用,因为正如您所观察到的,Java 21 不受支持 直到 Gradle 8.4

您必须升级 Gradle,或降级 Java。

如果您的首要任务只是让它正常工作,那么降级 Java 可能是一种更简单的方法,因为其他一些工具可能还无法与 Java 21 完全兼容。

© www.soinside.com 2019 - 2024. All rights reserved.