Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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.