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

Erro no Grade ao executar o passo 2: Add FCM to your app

Pessoal, boa tarde.

Seguindo a aula 3 - Instalando o Firebase da atividade 02 - Recebendo informaçõe s do servidor estou com dificuldades no passo 2 - Add FCM to your app.

Após executado este passo o gradle de nível de projeto tem a linha 'com.google.gms:google-services:4.0.1' adicionada e o gradle de nível de aplicação tem a linha compile 'com.google.firebase:firebase-messaging:17.0.0:15.0.0'.

Após isto, quando o gradle tenta sincronizar de forma automática, ocorre o erro abaixo:

Could not find com.google.gms:google-services:4.0.1. Searched in the following locations: https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.0.1/google-services-4.0.1.pom https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.0.1/google-services-4.0.1.jar https://jcenter.bintray.com/com/google/gms/google-services/4.0.1/google-services-4.0.1.pom https://jcenter.bintray.com/com/google/gms/google-services/4.0.1/google-services-4.0.1.jar Required by: project :

Grade da App

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "aluracursoandroid.com.agenda"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        packagingOptions {
            exclude "META-INF/LICENSE"
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.google.android.gms:play-services-maps:16.0.0'
    implementation 'com.google.android.gms:play-services-location:16.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-jackson:2.5.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.12.0'
    implementation 'com.google.firebase:firebase-messaging:17.0.0:15.0.0'
}

Gradle do Projeto

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath 'com.google.gms:google-services:4.0.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
20 respostas

Oi Daniel, tudo bem?

Fizemos algumas atualizações nos exercícios do curso em relação às configurações do Firebase, portanto, dê uma olhada neste exercício que detalha todos os passos, os possíveis problemas e como pode ser resolvido, caso ainda apresentar problemas nos informe o erro que tá dando junto dos mesmos arquivos que mandou atualizados.

[]s

Oi, Alex. Obrigado pelo retorno.

Ainda sem sucesso. fiz conforme sugerido no link que você enviou: dividi a implementação do firebase nas duas linhas abaixo dentro do gradle da app:

implementation 'com.google.firebase:firebase-messaging:17.3.3'

implementation 'com.google.firebase:firebase-core:16.0.4'

O erro que ocorre na janela Buld durante tentativa de sincronismo do Gradle continua sendo o anterior, que segue abaixo:

Could not find com.google.gms:google-services:4.1.0. Searched in the following locations: https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.1.0/google-services-4.1.0.pom https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.1.0/google-services-4.1.0.jar https://jcenter.bintray.com/com/google/gms/google-services/4.1.0/google-services-4.1.0.pom https://jcenter.bintray.com/com/google/gms/google-services/4.1.0/google-services-4.1.0.jar Required by: project :

Quando começam a dar esses problemas talvez seja alguma outra configuração ou dependência que esteja com problema na versão. Consegue compartilhar todo o projeto comigo via GitHub? Dessa forma, eu posso baixar, testar e te passar um feedback do que identifiquei como problema, o que acha?

[]s

Show,

Você alguma referência de material onde consigo fazer o upload do projeto para o GitHub? Pelo Android Studio não tenho a manha, rsrsr, somente no Visual Studio.

Caso tenha irá me ajudar, fico aguardando. De qualquer forma já estou pesquisando aqui e te informo quando postar no GitHub.

Pronto, Alex.

Consegui colocar o código no github, segue link abaixo:

https://github.com/danielft11/Agenda

Fico no aguardo ansiosamente para dar continuidade ao treinamento.

Obrigado.

Ainda não testei pq agora estou via celular, mas vi o arquivo que fiz e usei versão 4.0.1 do gms, tenta essa versão e vê se vai, segue o link do meu arquivo de config https://github.com/alura-cursos/android-sync-parte-2/blob/aula-2/build.gradle

O mesmo erro, tanto usando 4.0.1 ou 4.1.0, já havia feito esta tentativa anteriormente.

Oi Daniel, realmente foi um detalhe que nem sei explicar o real motivo...

Vi no StackOverFlow e sugeriram uma alternativa como solução adicionando o seguinte script no repositório:

maven { url "https://dl.bintray.com/android/android-tools" }

Então ficou assim:

buildscript {

    repositories {
        google()
        jcenter()
        maven { url "https://dl.bintray.com/android/android-tools" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath 'com.google.gms:google-services:4.2.0'
    }
}

Note também que coloquei a versão 4.2.0. Testei no meu outro projeto e não estava indo porque o repositório do jcenter() estava declarado primeiro, deixei o do google() primeiro e foi... Realmente são detalhes chatos de dependências que a Google oferece...

Pode testar dessa maneira e vê se funciona? Inclusive, vou fazer o update para sempre deixar o da Google primeiro, algo que não faz o menor sentido...

Um detalhe importante é que se não for, tente aplicar a técnica de limpeza de projeto e rebuild. Caso não souber é só usar o find action com o Ctrl + Shift + A, aí escreve clean project, depois o mesmo atalho rebuild project, por último o mesmo atalho sync project with gradle files.

Alex,

Testei em casa, o erro não ocorre mais (aparentemente), porém a etapa 2 ADD FCM TO YOUR APP não fica verde, é como se não tivesse sido executada. Se clico nela ela sugere o código abaixo, porém já tenho definido os implementation 'com.google.firebase:firebase-messaging:17.3.3' e implementation 'com.google.firebase:firebase-core:16.0.4' no meu gradle:

build.gradle will include these new dependencies: compile 'com.google.firebase:firebase messaging:17.0.0:15.0.0'

Não sei mais o que fazer, é provável que não conseguirei concluir este módulo por causa destes problemas.

Oi Daniel, pode deixar do jeito que tava antes, é um bug que começou a surgir na versão 3.+ do Android Studio, portanto, pode manter a configuração que fez build e testar o App conforme a aula, não precisa estar verde nesta parte para que funcione :)

Apenas a conexão com o Firebase é o suficiente, dado que ele vai adicionar o google-services.json do seu projeto que foi criado no Firebase.

Sim, está acontecendo com todo mundo.

Alex,

Tive vários erros no código após tentativa do Firebase.

Como tenho backup dele à partir da Aula de Swipe Layout Refresh decidi começar novamente à partir da aula "Push Notification".

Visto que o Wizard do Android Studio está configurando o Gradle incorretamente você sugere tentar por lá ou fazer esta parte manualmente?

Opa Daniel, blz?

Até imagino, muita gente acaba tendo quando começa esses bugs chatos... Certo, dado que você vai refazer, apenas faça o procedimento do Connect to Firebase. O resto faça da maneira manual.

Apenas para deixar claro, esse processo de conexão, faz vínculo do seu projeto com o projeto criado no Firebase, basicamente ele baixa o arquivo google-service.json do projeto do Firebase e adiciona no módulo app do seu projeto.

O segundo passo é aquela configuração feita no build.gradle do projeto e do módulo app conforme é mostrado via exercício. Caso quiser a referência atualizada do que fiz no projeto segue o link dos arquivos:

Eu entendo perfeitamente que esse passo desmotiva bastante, é uma das piores experiências para qualquer desenvolvedor Android, mas resolvendo uma vez, muito provavelmente não precisa mais ter essa preocupação. Precisando de qualquer auxílio não exite em mandar pra gente.

[]s

Desmotivar até que não, Alex.

É bom pegar estas maldades em treinamento para quando vem a prática real do dia a dia, a correção de bug em projetos já existentes, nós já estarmos amadurecidos.

Agradeço imensamente seu apoio até aqui e darei continuidade.

Aproveitando a ocasião, não consigo achar "Notifications" dentro do Firebase Console. A interface atual se não me engano é um pouco diferente da utilizada na época do curso.

Sabe me dizer onde encontro o Notifications ou ele aparece somente depois de algum procedimento?

Esse é o espírito! hehe

Com certeza, o treinamento é justamente para entender as complexidades que o mundo real vai ter e já entender como pode lidar.

Essa mudança da interface eu falo neste exercício -> https://cursos.alura.com.br/course/android-sincronizacao-com-servidor-parte-2/task/46325

Mas já dando spoiler é Ampliar -> Cloud Messaging.

Alex,

Estou no terceiro passo criando a classe AgendaInstanceIDService. Quando vou extender ela da classe FirebaseInstanceIdService esta "FirebaseInstanceIdService" fica com um traço no meio da palavra e o Android Studio alerta com a seguinte mensagem:

"com.google.firebase.iid.FirebaseInstancedService is deprecated. This inspection reports where deprecated code is used in the specified inspection scope".

Trata-se só de um alerta ou pode causar erros?

Oi Daniel,

Esse risco no nome da classe indica que a classe ficou obsoleta ou o famoso deprecated. Caso não tenha ideia do que seja essa abordagem, basicamente é uma técnica utilizada para indicar que existe uma nova abordagem recomendada.

Em outras palavras, classes deprecated devem ser evitadas, a não ser que o projeto seja um legado que sem o uso dessa classe apresenta um problema bem difícil de lidar...

Eu ainda deixei no exercício por questões de suporte ao que é ensinado no curso e de acordo com a versão do Firebase usada em curso.

Não se preocupe, neste exercício eu mostro as orientações do que deve ser feito https://cursos.alura.com.br/course/android-sincronizacao-com-servidor-parte-2/task/46433.

Alex,

Me desculpe, consegui avançar. Mas não achei no Console do Firebase a opção "Enviar sua primeira mensagem".

Já estando dentro do meu projeto lá no console eu vou em Ampliar / Cloud Messaging e aparecem as opções "Como Começar", "Como Cloud Message Funciona?", "Em que Cloud Message pode ser útil para mim", In App Messaging", "Predictions" e "Remote Config".

Deduzo que devi ir em In App Messaging" e depois em Cloud Messaging, mas não acho a opção.

solução!

Consegui, Alex.

Digitei diretamente a URL vista na video-aula: console.firebase.google.com/project/meuprojeto/notification/compose.

Muito obrigado, podemos fechar este tópico.

Vi aqui, parece que mudaram denovo o botão e esqueceram de traduzir, está como Send your first message que seria o "Enviar sua primeira mensagem". Deixei abaixo um print mostrando o botão:

https://ibb.co/311Xf9W