Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

[Reclamação] Erros ao seguir o "Saiba mais: Como configurar o Firebase no Flutter'

Estou precisando MUITO de ajuda tem quase uma semana que estou envolvido com o problema abaixo e não acho uma solução.

Preciso muito dar início ao desenvolvimento de uma aplicação usando firebase/firecloud e não consigo, apesar de já ter feito anteriormente com sucesso.

Houve algumas alterações no “GRADLE”, e algumas coisas foram “deprecated”. Com isso, várias aplicações de cursos pararam de compilar. A mensagem manda que se examine uma documentação com alterações a fazer nos arquivos, mas estas alterações não resolvem o problema.

Um exemplo é o curso Flutter: aplicando constraints e implementando layouts responsivos. Eu completei o curso sem problemas, e agora dois meses depois o projeto que funcionava perfeitamente não compila mais.

O problema mais sério que estou tendo é a formação “FLUTTER COM FIREBASE: IMPLEMENTANDO BANCO DE DADOS ONLINE COM CLOUD FIRESTORE”

Fiz este curso a um mês atrás mais ou menos, e não tive nenhum problema, cheguei a fazer um programa que digitava dados no smartfone e eles iam para a nuvem, eu conferia através do console do cloudstore.

Após um intervalo de uns 30 dias resolvi retomar o projeto, e para minha surpresa, a uns 4 dias compilei novamente o programa antes de fazer algumas alterações, e a compilação não funcionou. Houve várias atualizações do flutter, principalmente no gradle,

Resolvi começar do ZERO novamente para ver se descobria o que estava ocorrendo e o resultado foi o seguinte:

1 - Criei um projeto padrão no Android Studio, chamado flutter_firebase_alura, testei e funcionou perfeitamente

2 - Fiz todos os passos gerais que o vídeo de configuração manda, testei funcionou tudo conforma explicado no vídeo, inclusive o aplicativo

3 - Dei início à etapa 2, configurar os apps para usar o Firebase, começando com o comando “flutterfire configure”, usando “com.example.app” como id da aplicação, uma coisa que no vídeo não tinha.

4 - Tentei rodar o programa, e deu o seguinte erro:

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:processDebugGoogleServices'.

    No matching client found for package name 'com.example.flutter_firebase_alura'

  • 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 11s Error: Gradle task assembleDebug failed with exit code 1

5 - Seguindo o vídeo, dei o comando para adicionar o cloud firestore, “flutter pub add cloud_firestore”, e deu o seguinte erro:

ataliba@Mac-mini-de-Ataliba flutter_firebase_alura % flutter pub add cloud_firestore "cloud_firestore" is already in "dependencies". Will try to update the constraint. Resolving dependencies... Downloading packages... meta 1.12.0 (1.14.0 available) test_api 0.7.0 (0.7.1 available) Got dependencies! 2 packages have newer versions incompatible with dependency constraints. Try flutter pub outdated for more information.

7 - Dei os comandos “flutter pub outdated” e depois o “flutter pub upgrade” e não adiantou nada

8 - No vídeo, ele fala que tem que rodar o comando “flutterfire configure” para cada vez que adicionamos uma nova dependência, então eu rodei o comando novamente, usando os mesmos parâmetros da vez anterior.

9 - Tentei rodar a aplicação e deu o erro novamente:

Launching lib/main.dart on sdk gphone64 x86 64 in debug mode... Running Gradle task 'assembleDebug'...

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:processDebugGoogleServices'.

    No matching client found for package name 'com.example.flutter_firebase_alura'

  • 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 41s Error: Gradle task assembleDebug failed with exit code 1

10 - Continuei seguindo o vídeo, importando “firebase_core.dart” e firebase_options.cart” para dentro do arquivo “main.dart”

11 - Fiz todas as alterações no “main.dart” que o instrutor mandou.

12 - Ao tentar fazer as alterações no arquivo “build.gradle” me deparei com dois problemas a) A linha “def localProperties = new Properties() passou a dar o seguinte erro: “Cannot resolve symbol 'Properties”

b)  O instrutor disse que a linha “minSdkVersion flutter.minSdkVersion” no arquivo build.gradle deveria ser alterada, substituindo “minSdkVersion 19”, só que esta linha não existe na nova versão do gradle.  Em seu lugar existe a linha “minSDK = flutter.minSdkVersion”.

Com estes erros o programa nem compila mais.

Assim, está impossível usar este arquivo como guia de instalação para podermos usar o firebase/firecloud em aplicações android.

Não dá para seguir mais este roteiro, pois qualquer programa dá erro.

6 respostas

Olá!

Sinto muito pelos problemas durante o seu aprendizado! Vou ajudar você da melhor maneira possível. Vamos lá!

Percebi, pelas mensagens de erro, que você utiliza um Mac, então provavelmente posso replicar ou passar soluções que funcionem para você.

Meu setup:

  • Mac Mini M1
  • Flutter version 3.19.5 (atualizei ontem meu Flutter)
  • Android Studio Flamingo 2022.2.1 Patch 2
    • Runtime version: 17.0.6+0-17.0.6b802.4-9586694 aarch64
  • Visual Studio Code 1.87.2
  • Simulador Pixel 5 API 31 (Android 12)

Compare com o seu setup e veja se há alguma diferença. Há algo que você pode atualizar?

Alura + Como configurar o Firebase no Flutter

Fiz um teste aqui e, por gentileza, verifique e compare com a sua configuração do Firebase.

Criei um projeto novo do zero utilizando o comando flutter create no terminal. Segui todos os passos de criar conta e um novo projeto dentro do navegador na página do Firebase. Instalei o firebase-tools utilizando o Node Package Manager (npm). Dentro do meu projeto (utilizando Visual Studio Code), instalei a ferramenta do flutterfire e arrumei o PATH (tive que configurar o meu por algum motivo, mas acredito que você não teve o mesmo problema que eu).

Tenho as seguintes dependências instaladas:

dependencies:
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.6
  firebase_core: ^2.29.0
  cloud_firestore: ^4.16.1

No meu arquivo main.dart:

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(const MyApp());
}

No meu app/build.gradle:

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.fire_alura"
        // 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
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        multiDexEnabled true
    }

Rodei o comando flutterfire configure e atualizei as dependências.

Como podem ocorrer erros de versões, fiz uma mudança de cada vez para ver o que eu precisava adicionar ou alterar para fazer o aplicativo rodar.

Com essas minhas configurações, no final do Alura+ eu tinha o aplicativo rodando sem erros (só tive que aumentar o armazenamento interno para 16gb do meu emulador).

Não precisei mudar o minSdkVersion como no A+. Fiz isso propositalmente porque estou assumindo que você também está utilizando a versão mais nova do Flutter. Caso não a tenha, atualize a versão do seu Flutter para a mais recente.

Curso

Utilizando as configurações acima eu consegui seguir o curso normalmente até o final. Vamos ver agora os problemas e possíveis soluções.

Problemas

No item 3 do seu passo-a-passo, você disse que utilizou "com.example.app" como id da aplicação. Esse id da aplicação é gerado automaticamente quando você inicia um novo projeto Flutter. O erro que você está tendo provavelmente é porque, em algum lugar, esse id foi alterado e não reflete o que o seu novo projeto do Flutter gerou. No meu exemplo de app/build.gradle, o meu applicationId está como veio.

Quando rodei pela primeira vez o meu flutterfire configure, não me foi perguntado se eu queria usar um novo id. Isso só acontece se você não tiver um projeto já criado pela sua conta do Firebase e se você selecionou a opção no terminal create a new project.

No item 5, você escreveu que tentou rodar o comando flutter pub add cloud_firestore e ele te retornou o erro dizendo que já existe essa dependência em seu projeto. E isso faz sentido se você já seguiu os passos do A+.

O seu erro mais importante é o do item 3, porque ele está dizendo que não encontrou um "pacote" ou "aplicativo" com a identificação "com.example.flutter_firebase_alura". E é ele que provavelmente impossibilita você de continuar os estudos.

Possíveis soluções

Vamos tentar as soluções na sequência.

1) Configure o flutterfire

Primeiro, verifique na sua conta do Firebase se você já tem um projeto criado. Depois, apague os seguintes arquivos gerados pelo flutterfire:

  • lib/firebase_options.dart
  • .flutter-plugins
  • .flutter-plugins-dependencies
  • firebase.json

Rode novamente o flutterfire configure e tenha certeza de que o seu projeto criado no Firebase aparece como opção de seleção.

Assim, o seu aplicativo Flutter consegue se relacionar com o projeto Firebase corretamente.

2) Atualize ferramentas

Recomendo atualizar o seu Flutter e o seu Android Studio para as versões mais atualizadas. Fiz todos os testes com a versão mais atualizada do Flutter. Se não me engano, o arquivo app/build.gradle que é gerado depende da versão do Flutter que você está utilizando.

Você pode atualizar a versão do seu Flutter utilizando o comando flutter upgrade.

3) Android Studio

Uma outra sugestão é não utilizar o Android Studio para criar um novo projeto.

Utilize o comando do terminal flutter create para gerar um novo projeto.

Entendo que, com o Android Studio, deveria ser possível você seguir o curso também, mas descobri se o problema está na maneira que o Android Studio gera um novo projeto Flutter (ou em outro lugar).

Uma possibilidade para continuar utilizando o Android Studio é gerar um novo projeto utilizando o comando no terminal e depois abrir a pasta do projeto gerado no seu Android Studio.

De qualquer forma, recomendo atualizar todas as ferramentas.

4) Emulador

Outra sugestão também é recriar o seu emulador.

Às vezes alguns caches ficam corrompidos e impossibilitam rodar qualquer aplicação.

Dentro do seu Android Studio, apague o emulador e crie outro. Em teoria, não precisa ser na mesma versão de Android que o meu, mas se quiser tentar replicar o máximo do meu setup, maior a garantia de que vai funcionar.

Dúvida importante

Fiquei com uma dúvida relacionada à sua frase no final do tópico: "Não dá para seguir mais este roteiro, pois qualquer programa dá erro."

Nenhum projeto mais funciona?

Se você criar um novo projeto Flutter e tentar rodar o aplicativo que é gerado automaticamente ele também dá esses erros?

É crucial eu entender isso, porque se todos os seus projetos (inclusive novos) estão com esse problema depois do seu passo 12, é sinal de que algo vital do seu Flutter e/ou Android Studio foi desconfigurado.

Neste caso, recomendo remover completamente o Flutter e o Android Studio da sua máquina e depois instalar as ferramentas novamente, tentando garantir que nenhuma informação/configuração antiga ficou salva.

Espero que alguma das soluções tenha te ajudado com o problema.

Tente efetuar essas soluções e depois me conta se funcionou! Vou ajudando você por aqui, tudo bem?

Estou à disposição para tirar mais dúvidas.

Obrigado Matheus, vou seguir suas recomendações amanhã cedo e ver se funcionam, qualquer coisa eu te falo, ok ?

Estou usando as últimas versões de tudo, inclusive o Flutter (Flutter 3.22.0-9.0.pre.7 • channel master) e Android Studio (Android Studio Iguana | 2023.2.1, Runtime version: 17.0.9+0-17.0.9b1087.7-11185874 x86_64) mas antes de começar amanhã vou dar uma boa olhada de novo, e fazer tudo com muita calma e documentando.

Quando eu disse "Não dá para seguir mais este roteiro, pois qualquer programa dá erro." eu quis dizer que criando quele projeto padrão do contador ele funciona direitinho, mas assim que se aplicam as alterações do roteiro em vídeo eles começam a dar problema.

Uma outra coisa também, houve muitas alterações no GRADLE, e projetos antigos que funcionavam perfeitamente agora dão erro ao compilar.

Por exemplo, fiz a formação "Flutter: aplicando constraints e implementando layouts responsivos" sem problema algum, ficou ótimo e tão bonito que instalei no meu celular Android.

Enquanto esperava uma resposta a esta dúvida aqui, resolvi dar uma olhada de novo, e agora ao recompilar o programa aparece uma mensagem dizendo que o GRADLE mudou, e que você tem que fazer algumas alterações manualmente seguindo a documentação que aparece em um link na mensagem. Fiz as alterações, e o programa continuou dando erro.

Achando que poderia ser um problema meu, fui ao repositório do curso e baixei o projeto original do instrutor, e deu o mesmo erro. Fiz as alterações que o documento mandava, e mesmo assim não funcionou. Resolvi usar inteligência artificial, o chat GPT 4, o Copilot e o Gemini e em todos os 3 eu disse "tenho este arquivo aqui (meu "build.gradle") e tenho que fazer as seguintes alterações (copiei e colei as alterações a partir do site)., "altere meu arquivo segundo as diretrizes do documento".

Em todos os 3, as alterações eram as mesmas que eu havia feito, então tem um problema na documentação.

Testei com duas outras formações que havia feito a meses atrás, e agora com a ultima versão do flutter o erro se manifestou nos dois.

Bem, agradeço mais uma vez seu contato e boa vontade em me ajudar, vou fazer tudo direitinho e com muita calma e se tiver alguma dificuldade falo com você novamente.

Um forte abraço, e boa noite.

Bom dia,

Fiz tudo exatamente como você mandou, mas não funcionou.

Acho que o problema está na hora da linha de comando para criar o arquivo, pois ele gera um package com um nome superestranho, como no erro abaixo:

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:processDebugGoogleServices'.

    No matching client found for package name 'br.com.ataliba.teste2.teste_ataliba2'

Eu usei o seguinte comando para criar o projeto:

       flutter create --project-name teste_ataliba2 --platforms android --org br.com.ataliba.teste2 /Users/ataliba/StudioProjects/teste_ataliba2  

E na hora que dou o comando "flutter configure" ele sempre me pede um package name, como na mensagem abaixo: “Which Android application id (or package name) do you want to use for this configuration, e.g. 'com.example.app'.

E eu respondi com: com.testeataliba2.app

Acho mesmo que é o comando para criação do arquivo, pode me passar qual comando você usou para criar e me dar mais algumas dicas ?

Obrigado mais uma vez.

Fiz umas 5 vezes aqui o passo a passo, criando sempre projetos do zero, e o erro sempre se repete.

Vou te passar passo a passo o que eu fiz nesta ultima vez.

O mais estranho é o seguinte: ao criar o arquivo, eu coloco no parâmetro --org o seguinte: --org br.com.ataliba

No erro, ele diz que não consegue encontrar um cliente correspondente para o pacote 'br.com.ataliba.ataliba'. Ele coloca ATALIBA duas vezes no nome do pacote.

O erro que aparece é o seguinte:

  • What went wrong: Execution failed for task ':app:processDebugGoogleServices'.

    No matching client found for package name 'br.com.ataliba.ataliba'

Este problema aparece no arquivo "build.gradle", como abaixo:

android { namespace = "br.com.ataliba.ataliba" <== INDICAÇÃO MINHA compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion

compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

O que será que está acontecendo ?

Abaixo, meu passo a passo:

Meu Setup:

• Mac Mini (Late 2014) - Processador Intel • Sistema operacional: macOS Monterey versão 12.7.4 (a última versão suportada por processadores Intel) • Flutter 3.22.0 • Android Studio • Android Studio Iguana | 2023.2.1 • Build #AI-232.10227.8.2321.11479570, built on February 21, 2024 • Runtime version: 17.0.9+0-17.0.9b1087.7-11185874 x86_64

• Emulador: Pixel 5 API 31(Android 12.0 x86_64

O QUE EU FIZ

1 – Entrei no console do firebase, apaguei todos os projetos que tinha cadastrado lá e criei um projeto do zero, chamado “ ataliba ”

2 – Criei um novo emulador com as mesmas características do seu.

3 – Entrei no VS Code e dentro do meu diretório “ StudioProjects” , criei o projeto a partir do terminal no VS Code, usando o comando “ flutter create --project-name ataliba --platforms android --org br.com.ataliba ./ataliba ”.

4 – Seguindo o roteiro do vídeo, dei o comando “ flutterfire configure ”. Selecionei o projeto “ ataliba ” e ele me fez a pergunta, “Which Android application id (or package name) do you want to use for this configuration, e.g. 'com.example.app'.

Respondi: “ com.ataliba.app ”.

Dei um refresh no console do firebase e ele já apareceu lá.

5 -Instalei o “firebase core” com o comando “ flutter pub add firebase_core ”. Apareceu no arquivo “pubspec.yaml”

6 – Instalei o “cloud_firestore” com o comando “ flutter pub add cloud_firestore ” Apareceu no arquivo “pubspec.yaml”

7 – Rodei novamente o comando “ flutterfire configure ”. Ele perguntou se eu queria usar os arquivos já existentes e eu respondi. yes

9 – Fiz as seguintes alterações no meu arquivo main, que ficou assim

import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'firebase_options.dart';

void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); runApp(const MyApp()); }

10 – Não fiz alterações no arquivo “app/build.gradle”.

11 - Tentei rodar o programa e deu o erro:

ataliba@Mac-mini-de-Ataliba teste_ataliba99 % flutter run Launching lib/main.dart on sdk gphone64 x86 64 in debug mode...

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:processDebugGoogleServices'.

    No matching client found for package name 'br.com.ataliba.teste99.teste_ataliba99'

  • 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 6s Running Gradle task 'assembleDebug'... 7,3s Error: Gradle task assembleDebug failed with exit code 1 ataliba@Mac-mini-de-Ataliba teste_ataliba99 %

solução!

Problema resolvido, não era nada do que imaginávamos.

No meu computador, diferente do que acontece no vídeo, ao usar o comando "flutterfire configure" a primeira vez, ele sempre me pede um "package name", como na mensagem abaixo:

“Which Android application id (or package name) do you want to use for this configuration, e.g. 'com.example.app".

Pela mensagem acima, dá a impressão que pode colocar qualquer nome, mas aí ele altera o arquivo "android/app/build.gradle". Ele vai na cláusula "applicationId" e mistura o conteúdo dela com o que você colocou, bagunçando tudo.

Então, na hora da execução ele dá um erro, porque o "package name" no "build.gradle" foi alterado e não corresponde mais ao que foi criado originalmente. "What went wrong: Execution failed for task ':app:processDebugGoogleServices'. No matching client found for package name 'br.com.ataliba.teste99.teste_ataliba99' "

SOLUÇÃO:

Siga o vídeo normalmente, até a hora de executar o comando "flutterfire configure". Se ele pedir para você colocar o "package name" vá até o arquivo 'android/app/builgradle", procure a cláusula "applicationId" e copie seu conteúdo.

Coloque este conteúdo como "package name", e prossiga normalmente com "flutterfire configure".

Assim não haverá alterações no arquivo "build.gradle" e não dará mais erro.

Você não terá mais problemas.

Espero que isto possa ajudar a quem tiver este problema.