15
respostas

Erro ao executar o build do projeto 01

Versão do Java: 17.0.11. Ao eu executar o build do projeto 01, gerar APK no Android Studio, ocorrem os erros, que seguem abaixo:

/home/evaldo/softwares/flutter_linux_3.27.0/bin/flutter --no-color build apk Resolving dependencies... Downloading packages... args 2.4.2 (2.6.0 available) async 2.11.0 (2.12.0 available) boolean_selector 2.1.1 (2.1.2 available) characters 1.3.0 (1.4.0 available) clock 1.1.1 (1.1.2 available)

collection 1.19.0 (was 1.17.1) (1.19.1 available) cupertino_icons 1.0.5 (1.0.8 available) fake_async 1.3.1 (1.3.2 available) flutter_lints 2.0.1 (5.0.0 available) flutter_svg 2.0.7 (2.0.16 available) http 1.1.0 (1.2.2 available) http_parser 4.0.2 (4.1.2 available)

  • leak_tracker 10.0.7 (10.0.8 available)
  • leak_tracker_flutter_testing 3.0.8 (3.0.9 available)
  • leak_tracker_testing 3.0.1 lints 2.1.1 (5.1.1 available)

    matcher 0.12.16+1 (was 0.12.15) (0.12.17 available) material_color_utilities 0.11.1 (was 0.2.0) (0.12.0 available) meta 1.15.0 (was 1.9.1) (1.16.0 available) path 1.9.0 (was 1.8.3) (1.9.1 available) path_parsing 1.0.1 (1.1.0 available) petitparser 5.4.0 (6.0.2 available) < sky_engine 0.0.0 from sdk flutter (was 0.0.99 from sdk flutter) source_span 1.10.0 (was 1.9.1) (1.10.1 available) sqflite 2.2.8+4 (2.4.1 available) sqflite_common 2.4.5+1 (2.5.4+6 available) stack_trace 1.12.0 (was 1.11.0) (1.12.1 available) stream_channel 2.1.2 (was 2.1.1) (2.1.3 available) string_scanner 1.3.0 (was 1.2.0) (1.4.1 available) synchronized 3.1.0 (3.3.0+3 available) term_glyph 1.2.1 (1.2.2 available) test_api 0.7.3 (was 0.5.1) (0.7.4 available) typed_data 1.3.2 (1.4.0 available) vector_graphics 1.1.7 (1.1.15 available) vector_graphics_codec 1.1.7 (1.1.12 available) vector_graphics_compiler 1.1.7 (1.1.16 available)

  • vm_service 14.3.0 (15.0.0 available) xml 6.3.0 (6.5.0 available) These packages are no longer being depended on:
  • js 0.6.7 Changed 16 dependencies! 36 packages have newer versions incompatible with dependency constraints. Try flutter pub outdated for more information. Running Gradle task 'assembleRelease'... FAILURE: Build failed with an exception.
  • What went wrong: Could not open settings generic class cache for settings file '/home/evaldo/workspace_2019/3116-Flutter-MVC-Aula1/android/settings.gradle' (/home/evaldo/.gradle/caches/7.5/scripts/cmhfpkcf7ocfllmygpx5lw7ur).

    BUG! exception in phase 'semantic analysis' in source unit 'BuildScript' Unsupported class file major version 65

  • 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.orgBUILD FAILED in 1m 8s Running Gradle task 'assembleRelease'... 69,6s ┌─ Flutter Fix ────────────────────────────────────────────────────────────────┐ │ [!] Your project's Gradle version is incompatible with the Java version that | Flutter is using for Gradle. │ │ │ If you recently upgraded Android Studio, consult the migration guide at │ │ https://flutter.dev/to/java-gradle-incompatibility. │ │ │ Otherwise, to fix this issue, first, check the Java version used by Flutter by | running flutter doctor --verbose. │ │ │ Then, update the Gradle version specified in │ /home/evaldo/workspace_2019/3116-Flutter-MVC-Aula1/android/gradle/wrapper/ | gradle-wrapper.properties to be compatible with that Java version. See the | link below for more information on compatible Java/Gradle versions: │ │ https://docs.gradle.org/current/userguide/compatibility.html#java │ │ │ │ │ └──────────────────────────────────────────────────────────────────────────────┘ Gradle task assembleRelease failed with exit code 1 Process finished with exit code 1

Parece que o Flutter está reclamando da versão da JDK do Java.

15 respostas

Olá, Evaldo, como vai?

O erro que você mencionou indica uma incompatibilidade entre a versão do Gradle e a versão do Java instalada no seu sistema. Isso é comum quando o projeto utiliza uma versão do Gradle que não suporta Java 17 (class file major version 65). Vamos resolver isso em alguns passos:

  1. Verifique a versão do Java: Certifique-se de que a versão do Java que está instalada é a mesma que o Flutter está configurado para usar. Você pode verificar isso executando flutter doctor --verbose no terminal.

  2. Atualize o Gradle: A mensagem de erro sugere que a versão do Gradle não é compatível com a versão do Java que você está usando. Você pode atualizar o Gradle editando o arquivo gradle-wrapper.properties localizado em /home/evaldo/workspace_2019/3116-Flutter-MVC-Aula1/android/gradle/wrapper/. Procure por uma linha semelhante a distributionUrl=https\://services.gradle.org/distributions/gradle-x.x.x-all.zip e atualize para uma versão mais recente que seja compatível com o Java 17. Consulte a documentação de compatibilidade do Gradle para encontrar a versão correta.

  3. Atualize as dependências do projeto: Você pode tentar atualizar as dependências do projeto executando flutter pub upgrade para garantir que todas as bibliotecas estejam na versão mais recente e compatível.

  4. Consulte o guia de migração: Se você recentemente atualizou o Android Studio, pode ser útil seguir o guia de migração sugerido na mensagem de erro: Guia de migração do Flutter.

Depois de fazer essas alterações, tente executar o build novamente.

Espero que essas dicas ajudem a resolver o problema!

Siga firme nos seus estudos e conte com o fórum sempre que precisar!

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Mike, segui a sua orientação, mas o erro permanece. Eu executei o comando flutter doctor, e segue abaixo a saída no console:

saída console

Pela saída do console, você pode ver, que a JDK que está sendo utilizada é a do Android Studio, que é a: 21.0.3+-12282718-b509.11

Não é a minha JAVA_HOME , e tanto se eu utilizar as JDK que possuo instaladas na minha maquina e aponte na JAVA_HOME, o erro que é mostrado na saída do build, é o mesmo.

As JDKs que tenho são: java-17-openjdk-17.0.11.0.9-1 e java-21-openjdk-21.0.5.0.11-1

versao java gradleMinhas configurações seguem abaixo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Eu fiz as alterações necessárias, mas o mesmo erro permanece.

Mike, será que está dando conflito, entre a JDK interna do Android Studio, e a JDK da JAVA_HOME ? Será que não dá para eu setar o Android Studio para utilizar a mesma JDK da JAVA_HOME, ao invés da JDK interna ?

Será que está dando conflito, entre a JDK interna do Android Studio, e a JDK da JAVA_HOME ? Será que não dá para eu setar o Android Studio para utilizar a mesma JDK da JAVA_HOME, ao invés da JDK interna ? Por favor, como eu seto o plugin do Flutter para usar a JDK da JAVA_HOME ? Os artigos que acho na internet me falam como setar o plugin do Gradle, mas do plugin do Flutter eles não são claros.

O que eu encontrei é para setar a JDK do SDK do Flutter, que é o comando: flutter config --jdk-dir $JAVA_HOME

E tanto eu setando o Flutter e o Gradle para usarem a JDK 17 ou 21, continua ocorrendo o mesmo erro:

What went wrong: Could not open settings generic class cache for settings file '/home/evaldo/workspace_2019/3116-Flutter-MVC-Aula1/android/settings.gradle' (/home/evaldo/.gradle/caches/7.3/scripts/6rsganmfoegqzd41sa1nqh2r7). BUG! exception in phase 'semantic analysis' in source unit 'BuildScript' Unsupported class file major version 65

Agora não aparece mais a mensagem da JDK interna do Android toolchain, aparece somente a JDK do Android Studio, mas é pedido para atualizar a versão do Android SDK.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Olá, Evaldo.

Eu pesquisei mais a fundo por algum usuário que tenha passado por algum problema semelhante ao seu, e encontrei esse tópico no StackOverflow que trata do mesmo erro. Infelizmente está em inglês, mas usando o recurso de tradução que normalmente vem nos navegadores é possível compreender bem.

Alguns usuário relatam que basta substituir o JAVA_VERSION no arquivo release pela versão disponível na sua máquina, outros dizem que pode ser necessário fazer o downgrade do Java (é mencionado as versões 8 ou 11).

Peço que faça os teste e me retorne com o resultado, por favor. Se precisar de auxílio é só comentar nesse fórum.

Fico no aguardo :)

Mike, eu fiz as alterações necessárias, e passei daquele erro.Agora o erro é outro, é na SDK do Android. A SDK 35, não é para o Java 17, é para o Java 21, então setei a SDK 33. Só que ocorre outro erro.

Segue o erro:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Segue o conteúdo do arquivo app/build.gradle:


def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    namespace "com.example.grimorio"
    //compileSdkVersion flutter.compileSdkVersion
    //ndkVersion flutter.ndkVersion
    compileSdkVersion 33
    ndkVersion 33

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = '17'
    }

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

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.grimorio"
        // You can update the following values to match your application needs.
        // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
        //minSdkVersion flutter.minSdkVersion
        //targetSdkVersion flutter.targetSdkVersion
        minSdkVersion 33
        targetSdkVersion 33
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

A SDK 35 do Android, exige o plugin do Gradle AGP, seja no mínimo na versão 8, e aí algumas tags dos arquivo de configuração, vão mudar a forma como são declaradas. E para eu rodar esse projeto de exemplo, pel oque eu entendi, eu não necessito da SDK 35 do Android.

Olá, Evaldo.

O que acontece agora é por conta de uma atualização do Flutter. Houve uma mudança na forma como os plugins devem ser declarados, e infelizmente não há uma forma automática de fazer isso, então você deve fazer as mudanças nas declarações de forma manual. No próprio log do erro há o link com o passo a passo para isso. Novamente está em inglês, mas é possível compreender bem usando o recurso de tradução.

Peço que faça as atualizações e me retorne, por favor.

Fico no aguardo :)

Mike, eu vou fazer as atualizações necessárias.

Mike, fiz as atualizações necessárias. Mas surgiu um novo erro. Segue o erro abaixo:

/home/evaldo/softwares/flutter_linux_3.27.0/bin/flutter --no-color build apk

Running Gradle task 'assembleRelease'...                        

FAILURE: Build failed with an exception.

* Where:
Settings file '/home/evaldo/workspace_2019/3116-Flutter-MVC-Aula1/android/settings.gradle' line: 13

* What went wrong:
A problem occurred evaluating settings 'android'.
> Could not read script '/packages/flutter_tools/gradle/app_plugin_loader.gradle' as it does not exist.

* 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

BUILD FAILED in 1s
Running Gradle task 'assembleRelease'...                         2.050ms
Gradle task assembleRelease failed with exit code 1
Process finished with exit code 1

Pesquisei na internet por soluções, mas não funcionaram. https://stackoverflow.com/questions/64298876/could-not-read-script-c-flutter-packages-flutter-tools-gradle-app-plugin-loade.

Segue o conteúdo do arquivo settings.gradle:

pluginManagement {

    def flutterSdkPath = {
        def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
        def properties = new Properties()

        assert localPropertiesFile.exists()
        localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
        properties.getProperty("flutter.sdk")
    }
    assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
    apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"

    includeBuild("$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 "{agpVersion}" apply false
    id "org.jetbrains.kotlin.android" version "{kotlinVersion}" apply false
    id "com.google.gms.google-services" version "4.4.0" apply false
    id "com.google.firebase.crashlytics" version "2.9.9" apply false
}

include ':app'

Uma das soluções que eu pesquisei e encontrei na internet, era a de mudar a branch do Flutter, da branch stable, para a master. Eu mudei a branch, limpei o cache, mas não funcionou.

E no diretório da instalação do Flutter, no subdiretório "/packages/flutter_tools/gradle/" , existe o arquivo "app_plugin_loader.gradle". Embora seja lançado o erro: > Could not read script '/packages/flutter_tools/gradle/app_plugin_loader.gradle' as it does not exist.

Segue abaixo o conteúdo do arquivo app_plugin_loader.gradle:

import java.nio.file.Paths

File pathToThisDirectory = buildscript.sourceFile.parentFile
apply from: Paths.get(pathToThisDirectory.absolutePath, "src", "main", "groovy", "native_plugin_loader.groovy")

def moduleProjectRoot = project(':flutter').projectDir.parentFile.parentFile

List<Map<String, Object>> nativePlugins = nativePluginLoader.getPlugins(moduleProjectRoot)
nativePlugins.each { androidPlugin ->
    def pluginDirectory = new File(androidPlugin.path as String, 'android')
    assert pluginDirectory.exists()
    include ":${androidPlugin.name}"
    project(":${androidPlugin.name}").projectDir = pluginDirectory
}

String flutterModulePath = project(':flutter').projectDir.parentFile.getAbsolutePath()
gradle.getGradle().projectsLoaded { g ->
    g.rootProject.beforeEvaluate { p ->
        p.subprojects { subproject ->
            if (nativePlugins.name.contains(subproject.name)) {
                File androidPluginBuildOutputDir = new File(flutterModulePath + File.separator
                        + "plugins_build_output" + File.separator + subproject.name)
                if (!androidPluginBuildOutputDir.exists()) {
                    androidPluginBuildOutputDir.mkdirs()
                }
                subproject.layout.buildDirectory.fileValue(androidPluginBuildOutputDir)
            }
        }
        def _mainModuleName = binding.variables['mainModuleName']
        if (_mainModuleName != null && !_mainModuleName.empty) {
            p.ext.mainModuleName = _mainModuleName
        }
    }
    g.rootProject.afterEvaluate { p ->
        p.subprojects { sp ->
            if (sp.name != 'flutter') {
                sp.evaluationDependsOn(':flutter')
            }
        }
    }
}

Mike, eu segui as instruções do link que você havia me passo, para a migração do Android Gradle Plugin, segue o link: https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply

Os arquivos que tem de ser alterados nessa migração são o build.gradle, que fica no diretório: /android/build.gradle. Segue abaixo o meu arquivo alterado:


allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter()
        maven {
            url 'https://mvnrepository.com/artifact/com.android.tools.build/gradle'
        }
        maven {
            url 'https://mvnrepository.com/artifact/org.gradle/gradle-tooling-api'
        }
        maven {
            url 'https://github.com/gradle/gradle/releases'
        }
        gradlePluginPortal()
    }
}

rootProject.buildDir = '../build'/
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

tasks.register("clean", Delete) {
    delete rootProject.buildDir
}

O outro arquivo que tem de ser alterados nessa migração é o settings.gradle, que fica no diretório: /android/settings.gradle. Segue abaixo o meu arquivo alterado:


pluginManagement {

    def flutterSdkPath = {
        def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
        def properties = new Properties()

        assert localPropertiesFile.exists()
        localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
        properties.getProperty("flutter.sdk")
    }
    assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
    apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"

    includeBuild("$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 "{agpVersion}" apply false
    id "org.jetbrains.kotlin.android" version "{kotlinVersion}" apply false
    id "com.google.gms.google-services" version "4.4.0" apply false
    id "com.google.firebase.crashlytics" version "2.9.9" apply false
}

include ':app'

O outro arquivo que tem de ser alterado nessa migração é o build.gradle, que fica no diretório: /android/app/build.gradle. Segue abaixo o meu arquivo alterado:

    
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    namespace "com.example.grimorio"
    //compileSdkVersion flutter.compileSdkVersion
    //ndkVersion flutter.ndkVersion
    compileSdkVersion 33
    ndkVersion 33

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = '17'
    }

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

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.grimorio"
        // You can update the following values to match your application needs.
        // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
        //minSdkVersion flutter.minSdkVersion
        //targetSdkVersion flutter.targetSdkVersion
        minSdkVersion 33
        targetSdkVersion 33
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
    

Mike, mesmo fazendo as configurações necessárias de migração, não funcionou, apareceu o erro que eu postei em uma das mensagens anteriores, e segue de novo abaixo:

/home/evaldo/softwares/flutter_linux_3.27.0/bin/flutter --no-color build apk

Running Gradle task 'assembleRelease'...                        

FAILURE: Build failed with an exception.

* Where:
Settings file '/home/evaldo/workspace_2019/3116-Flutter-MVC-Aula1/android/settings.gradle' line: 13

* What went wrong:
A problem occurred evaluating settings 'android'.
> Could not read script '/packages/flutter_tools/gradle/app_plugin_loader.gradle' as it does not exist.

* 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

BUILD FAILED in 1s
Running Gradle task 'assembleRelease'...                         2.050ms
Gradle task assembleRelease failed with exit code 1
Process finished with exit code 1

Mike, não estou conseguindo progredir no curso, está dando esse erro de configuração de ambiente que relatei nas mensagens acima. Por favor, preciso de sua ajuda ?

Oi, Evaldo.

Tenta executar o projeto desse repositório. Eu buildei um projeto do zero com as configurações atualizadas, deve rodar sem problemas. As versões das dependências são as mesmas que o instrutor usa no curso, a unica difereça é que esse projeto já inicia da aula 2.

Isso porque na aula 1, a unica parte pratica é na atividade 1.4, depois é somente teoria, e no inicio da aula 2 o projeto estará da forma como esta no repositório.

Estou a disposição

Mike, obrigado. Vou atualizar e testar.

Mike, teste e realizou o build sem erros. Mas tinha uma mensagem de aviso, reclamando da propriedade ndkVersion, no arquivo build.gradle.kts, estava pedindo par atualizar da versão 26, para a versão "27.0.12077973".

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Agora realizou o build sem erros, e sem mensagens de aviso. Tudo certo, vou prosseguir com o curso.