IncompatibleClassChangeError po aktualizacji do Android Build Tools 25.1.6 GCM / FCM

80

Odkąd zaktualizowałem do Android SDK Tools 25.1.6 i Android Support Repository 32.0.0 (dziś rano), otrzymałem następujący błąd, nie zmieniłem nic w moim kodzie i nadal działa on na moim komputerze kolegi (Android SDK Tools 25.1.1 + repozytorium obsługi Androida 30.0.0).

java.lang.IncompatibleClassChangeError: The method 
     'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)' 
     was expected to be of type virtual but instead was found to be of type direct 
     (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar)

     at com.google.android.gms.iid.zzd.zzeb(Unknown Source)
     at com.google.android.gms.iid.zzd.<init>(Unknown Source)
     at com.google.android.gms.iid.zzd.<init>(Unknown Source)
     at com.google.android.gms.iid.InstanceID.zza(Unknown Source)
     at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
     at com.xxxxxxx.utils.RegistrationIntentService.onHandleIntent(RegistrationIntentService.java:55)
     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:145)
     at android.os.HandlerThread.run(HandlerThread.java:61)

Oto fragment kodu, który się zawiesił:

InstanceID instanceID = InstanceID.getInstance(this); // <-- crash here
String instanceIDToken = instanceID.getToken(getString(R.string.google_app_id),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

To wtedy, gdy próbuję uzyskać token z Google Cloud Messaging.

Importuję GCM w Gradle z podzielonymi usługami odtwarzania:

 compile 'com.google.android.gms:play-services-analytics:9.0.0' 
 compile 'com.google.android.gms:play-services-maps:9.0.0'
 compile 'com.google.android.gms:play-services-location:9.0.0' 
 compile 'com.google.android.gms:play-services-gcm:9.0.0' 
 compile 'com.google.android.gms:play-services-base:9.0.0'

EDYCJA wyłączająca GCM rozwiązała problem, więc domyślam się, że powinienem przejść do Firebase Cloud Message

EDIT2 Moje urządzenie otrzymuje Usługi Google Play 9.0 (wczoraj było 8.4.x). Teraz już się nie zawiesza, ale narzeka na deskryptor modułu

 Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
 Firebase API initialization failure.

Czy ktoś ma podobny błąd i jak to naprawić?

NAPRAWIONE specjalne podziękowania dla @stegranet. ./gradlew -q app:dependencies --configuration compilepomaga zidentyfikować zależności, które obejmują SDK 24.x.

Głównym problemem jest to, że niektóre biblioteki importują najnowszą bibliotekę wsparcia, używając +znaku zamiast wersji. To powoduje problem, włączając najnowszą dostępną wersję.

Więc unikaj +zależności logowania;)

sonique
źródło
Najwyraźniej Google Cloud Messaging przekształciło się w Firebase Cloud Messaging: firebase.google.com/docs/cloud-messaging nie jestem pewien, czy jest to powiązane, nadal badam.
sonique
Wydaje mi się, że to nie jest problem z narzędziami do kompilacji. Ma to związek z usługą Google Play. Używam wersji 9.0.0 i nadal otrzymuję błąd oraz narzekanie, że mój podpis jest nieważny ...
Arnold Balliu
Jak sprawdzić wersję usług Google Play na telefonie komórkowym? Widzę Muzykę Google Play, gry itp., Ale nie ma to nic wspólnego z usługami Play.
bschandramohan

Odpowiedzi:

36

Użyłem drzewa zależności Gradle, aby rozwiązać ten błąd za mnie.

Po prostu uruchom gradle -q app:dependencies --configuration compile i sprawdź dane wyjściowe pod kątem takich wpisów:

+--- com.mcxiaoke.viewpagerindicator:library:2.4.1
|    \--- com.android.support:support-v4:+ -> 24.0.0-beta1 (*)

Jak powiedział Diego Giorgini , ta wersja jest za wysoka (> = 24). Zaktualizuj zależności w build.gradlepodobny sposób

compile('com.mcxiaoke.viewpagerindicator:library:2.4.1') {
    exclude module: 'support-v4';
}
compile 'com.android.support:support-v4:23.4.0'
stegranet
źródło
Głównym problemem była biblioteka obsługująca import niektórych modułów za pomocą +znaku (jak w twoim przykładzie). Więc gradle zawiera najnowszą wersję, która nie pasuje do obudowy. Dzięki!
sonique
1
Nie rozumiem, w jaki sposób Android może wsunąć> = 24 zależności do naszego projektu, jeśli określamy wszystko jako poniżej 24. Wydaje się, że jest to nowy problem, który spowodował teraz zablokowanie wersji debugowania mojej aplikacji i doprowadził do sporego zamieszania - podczas gdy wersja sklepu z tym samym kodem wydaje się w porządku
Daniel Wilson
Dzięki stegranet za potwierdzenie. Właśnie udostępniamy aktualizację, aby to naprawić. Wypróbuj wersję 9.0.1
Diego Giorgini
Wtyczka Android Studio GradleView do analizy projektu.
Jignesh Patel
gdzie mam uruchomić następujący kod? „gradle -q app: dependencies --configuration compile”
Roee
34

aktualizacja 27 maja:

właśnie wydaliśmy aktualizację ( version 9.0.1), aby naprawić niezgodność, o której wspomniałem w mojej pierwszej edycji.
Zaktualizuj swoje zależności i daj nam znać, jeśli nadal występuje problem.

Dzięki!


pierwotna odpowiedź 20 maja:

Problem, który napotykasz, jest spowodowany niekompatybilnością między
play-services / firebase sdk v9.0.0i com.android.support:appcompat-v7 >= 24
(wersją wydaną z Android-N SDK)

Powinieneś być w stanie to naprawić, kierując się na wcześniejszą wersję biblioteki pomocy technicznej. Lubić:

compile 'com.android.support:appcompat-v7:23.4.0'
Diego Giorgini
źródło
2
To jedyne rozwiązanie, które wydaje się działać, dziękuję. To trochę przerażające, że takie błędy mogą dostać się do wersji produkcyjnych, jeśli nie masz nic przeciwko temu, żebym powiedział!
Daniel Wilson
zrobiłem to, zaktualizowałem: - kompiluję „com.google.android.gms: play-services-gcm: 9.0.2” także com.google.gms: google-services: 3.0.0 ”, ale skutkuje to błędem multidex. Dowolny pomysł!!
Rohit
„com.google.android.gms: play-services-gcm: 9.0.2” nadal ma ten problem
Tom Bevelander
Używam wersji 9.0.2 dla wszystkich moich modułów „play-services” i „com.google.gms: google-services: 3.0.0” w kompilacji projektu. Korzystając również z niedawno wydanej biblioteki obsługi 24.0.0. Udało mi się usunąć błąd zastępując „compile” com.google.android.gms: play-services-gcm: 9.0.2 ”przez„ compile ”com.google.firebase: firebase-messaging: 9.0.2 '"
c0deblooded
Wystąpił ten błąd podczas próby zmiany wersji na 9.0.1> Napraw konflikt wersji albo aktualizując wersję wtyczki Google-Services (informacje o najnowszej wersji są dostępne na bintray.com/android/android-tools/ ... ) lub zaktualizować wersję com.google.android.gms do 9.0.0. @Diego Giorgini
Roger Alien
5

mój współpracował z następującymi:

ocena na poziomie aplikacji

dependencies {
 compile 'com.android.support:appcompat-v7:23.4.0'
 compile 'com.android.support:design:23.4.0'
 compile 'com.google.android.gms:play-services:9.0.0'
}

gradle poziomu głównego

dependencies {
    classpath 'com.google.gms:google-services:3.0.0'
}
Macbee
źródło
2
U mnie to zadziałało ... Zmieniłem wszystkie wersje 24.2.1 na 23.4.0 i getToken znów działa ... To straszne! Teraz boję się aktualizacji wersji.
EZDsIt
5

Zaktualizowałem zależności usług odtwarzania w build.gradle

dependencies {
    compile 'com.google.android.gms:play-services:9.0.0'
}

Aby naprawić konflikt wersji, albo aktualizując wersję wtyczki Google-Services - musiałem zaktualizować usługi Google w build.gradlefolderze głównym projektu

dependencies {
    classpath 'com.google.gms:google-services:3.0.0'
}

Możesz pobrać najnowszą aktualizację usług Google tutaj .

Chociaż nie omija wyjątku, ale nie powoduje już awarii aplikacji po mojej stronie.

Aktualizacja

Mogłem uniknąć awarii, aktualizując studio Android z Beta Channel. Następnie zaktualizuj swój platform/build-toolswewnętrzny SDK.

wprowadź opis obrazu tutaj

Reaz Murshed
źródło
Dzięki, zaktualizowałem usługi Google do wersji 3.0.0, ale to nie pomaga :(
sonique
W moim przypadku otrzymuję wyjątek w logcat, ale już się nie zawiesza
Reaz Murshed
ok, dziękuję za opinię. Czy używasz Android Build Tools 25.1.6?
sonique
masz rację, działa z usługami Play 9.0.0, ale nie z usługami rozdzielonymi :(
sonique
Zrobiłem to, zaktualizowałem kompilację „com.google.android.gms: play-services-gcm: 9.0.2” także com.google.gms: google-services: 3.0.0 ”, ale skutkuje to błędem multidex. Dowolny pomysł!!
Rohit,
4

Aktualizacja do najnowszej wersji usług Google Play rozwiązała problem.

zastosuj wtyczkę: „com.google.gms.google-services” na dole ...

dependencies {
    compile 'com.google.android.gms:play-services:9.0.0'
}

https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project

synatest
źródło
dzięki. zaktualizowałem 9.0.0też, ale nadal mam problem. Obecnie używam podzielonego gms. : compile 'com.google.android.gms:play-services-analytics:9.0.0' compile 'com.google.android.gms:play-services-maps:9.0.0' compile 'com.google.android.gms:play-services-location:9.0.0' compile 'com.google.android.gms:play-services-gcm:9.0.0' compile 'com.google.android.gms:play-services-base:9.0.0'
sonique
Próbowałem się skompilować play-services:9.0.0, ale wciąż ten sam problem.
sonique
Używam „com.google.android.gms: play-services-gcm: 9.0.2”, ale mam ten sam problem
Tom Bevelander
3

Zdarzyło mi się to z powodu aktualizacji Facebooka sdk i miałem

compile 'com.facebook.android:facebook-android-sdk:4.+'

zastępując go

compile 'com.facebook.android:facebook-android-sdk:4.15.0'

rozwiązał mój problem.

Odniesienie: https://developers.facebook.com/docs/android/change-log-4.x

Vihaan Verma
źródło
1

Włączając wszystkie pakiety usług Play

dependencies {
  compile 'com.google.android.gms:play-services:9.0.0'
}

pomijasz błąd, ale rezultatem końcowym jest to, że pobieranie tokenu GCM nie działa ani nie możemy uzyskać wystąpienia GCM. Więc to nie jest rozwiązanie w moich książkach. Jeśli ktoś ma pojęcie, co się dzieje, proszę nas oświecić.

EDYTOWAĆ:

Zastąpiłem GCM firebase, zaktualizowałem Android Studio z 2.1 do 2.2, aby rozwiązać problem z natychmiastowym uruchamianiem za pomocą analizy Firebase, zaktualizowałem narzędzia do kompilacji do 24-rc4, a narzędzia platformy do 24-rc3 i utrzymałem wersję bibliotek obsługi do 23.4.0. Wszystko wydaje się teraz działać dobrze.

Stilianos Tzouvaras
źródło
wygląda na to, że musimy wdrożyć FCM
sonique
zrobiłem to i nadal otrzymuję ten sam błąd. Całkowicie usunąłem GCM i zastąpiłem go FCM na podstawie tego: developers.google.com/cloud-messaging/android/… Coś jest nie tak z biblioteką wsparcia, a nie pakietami GCM lub FCM
Stilianos Tzouvaras
1

Miałem ten sam problem i powrót z repozytorium wsparcia systemu Android 32.0.0 do repozytorium wsparcia systemu Android 31.0.0 rozwiązałem go.

BorisK
źródło
3
jak przywrócić repozytorium wsparcia dla Androida?
Pratama Nur Wijaya
2
Cóż, jedynym sposobem, jaki znalazłem, jest skopiowanie starego repozytorium zamiast nowego. Repozytorium znajduje się zwykle w folderze Androida, na który wskazuje Twój menedżer SDK (jeśli używasz komputera Mac, prawdopodobnie jest to ścieżka ~ / Library / Android / sdk / extras). W folderze dodatki zamień foldery „android i„ google ”na stare.
BorisK
Znalazłem repo tutaj: dl-ssl.google.com/android/repository/... , następnie rozpakować że do ../sdk/extras/android i usunięcie istniejących m2reposity wydawało się działać tak daleko.
Tom Redman
1

W przypadku powiadomień push na Androida z GCM 2016:

1) w Android SDK-> SDK Tools sprawdź usługi Google Play

2) w gradle dodaj zależności tylko jedną linię:

compile 'com.google.android.gms:play-services-gcm:9.4.0'

(nie ma określonej ścieżki klas i u mnie działa)

3) musisz utworzyć klasę 3 (GCMPushReceiverService, GCMRegistrationIntentService, GCMTokenRefreshListenerService)

4.1) kod usługi GCMTokenRefreshListenerService:

package com.myapp.android;

/**
 * Created by skygirl on 02/08/2016.
 */
import android.content.Intent;
import com.google.android.gms.iid.InstanceIDListenerService;

public class GCMTokenRefreshListenerService extends InstanceIDListenerService {

    //If the token is changed registering the device again
    @Override
    public void onTokenRefresh() {
        Intent intent = new Intent(this, GCMRegistrationIntentService.class);
        startService(intent);
    }
}

4.2) Kod dla GCMRegistrationIntentService (zmień autoryzowany podmiot na numer projektu):

package com.myapp.android;

/**
 * Created by Skygirl on 02/08/2016.
 */
import android.app.IntentService;
import android.content.Intent;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;

import com.google.android.gms.gcm.GoogleCloudMessaging;
import com.google.android.gms.iid.InstanceID;

public class GCMRegistrationIntentService extends IntentService {
    //Constants for success and errors
    public static final String REGISTRATION_SUCCESS = "RegistrationSuccess";
    public static final String REGISTRATION_ERROR = "RegistrationError";

    //Class constructor
    public GCMRegistrationIntentService() {
        super("");
    }


    @Override
    protected void onHandleIntent(Intent intent) {
        //Registering gcm to the device
        registerGCM();
    }

    private void registerGCM() {
        //Registration complete intent initially null
        Intent registrationComplete = null;

        //Register token is also null
        //we will get the token on successfull registration
        String token = null;
        try {
            //Creating an instanceid
            InstanceID instanceID = InstanceID.getInstance(this);
            String authorizedEntity = "XXXXXXXXXX"; //  your project number

            //Getting the token from the instance id
            token = instanceID.getToken(authorizedEntity, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

            //Displaying the token in the log so that we can copy it to send push notification
            //You can also extend the app by storing the token in to your server
            Log.w("GCMRegIntentService", "token:" + token);

            //on registration complete creating intent with success
            registrationComplete = new Intent(REGISTRATION_SUCCESS);

            //Putting the token to the intent
            registrationComplete.putExtra("token", token);
        } catch (Exception e) {
            //If any error occurred
            Log.w("GCMRegIntentService", "Registration error");
            registrationComplete = new Intent(REGISTRATION_ERROR);
        }

        //Sending the broadcast that registration is completed
        LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete);
    }
}

4.3) Kod dla GCMPushReceiverService:

package com.myapp.android;

/**
 * Created by Skygirl on 02/08/2016.
 */
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;

import com.google.android.gms.gcm.GcmListenerService;

//Class is extending GcmListenerService
public class GCMPushReceiverService extends GcmListenerService {

    //This method will be called on every new message received
    @Override
    public void onMessageReceived(String from, Bundle data) {
        //Getting the message from the bundle
        String message = data.getString("message");
        //Displaying a notiffication with the message
        sendNotification(message);
    }

    //This method is generating a notification and displaying the notification
    private void sendNotification(String message) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        int requestCode = 0;
        PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
        NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.your_logo)
                .setContentTitle("Your Amazing Title")
                .setContentText(message)
                .setPriority(Notification.PRIORITY_MAX)
                .setContentIntent(pendingIntent);
        noBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

        NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0, noBuilder.build()); //0 = ID of notification
    }
}

5) Nie zapomnij zmienić nazwy pakietu

6) W swoim mainActivity wklej ten kod:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Setup view
        setContentView(R.layout.main);
    mRegistrationBroadcastReceiver = new BroadcastReceiver() {

        //When the broadcast received
        //We are sending the broadcast from GCMRegistrationIntentService

        public void onReceive(Context context, Intent intent) {
            //If the broadcast has received with success
            //that means device is registered successfully
            if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_SUCCESS)){
                //Getting the registration token from the intent
                String token = intent.getStringExtra("token");
                //Displaying the token as toast
                Toast.makeText(getApplicationContext(), "Registration token:" + token, Toast.LENGTH_LONG).show();

                //if the intent is not with success then displaying error messages
            } else if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_ERROR)){
                Toast.makeText(getApplicationContext(), "GCM registration error!", Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getApplicationContext(), "Error occurred", Toast.LENGTH_LONG).show();
            }
        }
    };

    //Checking play service is available or not
    int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());

    //if play service is not available
    if(ConnectionResult.SUCCESS != resultCode) {
        //If play service is supported but not installed
        if(GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            //Displaying message that play service is not installed
            Toast.makeText(getApplicationContext(), "Google Play Service is not install/enabled in this device!", Toast.LENGTH_LONG).show();
            GooglePlayServicesUtil.showErrorNotification(resultCode, getApplicationContext());

            //If play service is not supported
            //Displaying an error message
        } else {
            Toast.makeText(getApplicationContext(), "This device does not support for Google Play Service!", Toast.LENGTH_LONG).show();
        }

        //If play service is available
    } else {
        //Starting intent to register device
        Intent itent = new Intent(this, GCMRegistrationIntentService.class);
        startService(itent);
    }
}

//Unregistering receiver on activity paused
@Override
public void onPause() {
    super.onPause();
    Log.w("MainActivity", "onPause");
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver);
}



    @Override
    public void onResume() {
 super.onResume();
        Log.w("MainActivity", "onResume");
        LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                new IntentFilter(GCMRegistrationIntentService.REGISTRATION_SUCCESS));
        LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                new IntentFilter(GCMRegistrationIntentService.REGISTRATION_ERROR));
    }

7) W pliku AndroidManifest.xml dodaj następujące wiersze:

<uses-permission android:name="android.permission.INTERNET" />

8) w logcat konsoli skopiuj token i wklej w tej witrynie dodaj numer projektu, token i wiadomość. U mnie działa dobrze :)

skygirl
źródło
Cześć @Skygirl Podążam za twoim przykładem, jakieś specjalne wymagania w AndroidManifest? Czy mógłbyś dodać tę część kodu? Dzięki
ziniestro
0

Po całym dniu mogę potwierdzić w 100%, że biblioteka Optimizely również w jakiś sposób koliduje i powoduje ten błąd. Mówiąc konkretnie, używam Optimizely przez Fabric. Niemożliwe jest zainicjowanie Firebase podczas korzystania z Optimizely w ten sposób (może na wszystkie sposoby?).

Napisałem o tym na ich githubie i skontaktuję się z nimi bezpośrednio ...

https://github.com/optimizely/Optimizely-Android-SDK/issues/11

Steven Elliott
źródło
0

Miałem ten sam problem. Zaktualizowałem narzędzia SDK do wersji 25.1.7 rc1, a następnie problem zniknął.

Tony Lin
źródło
0

zaktualizowałem narzędzia SDK do wersji 25.1.7 i naprawiono ten problem.

austin
źródło
0

Cóż, dopiero zaczynam korzystać z Androida. Chciałem przetestować tworzenie użytkowników Firebasezgodnie z instrukcjami, które są dostępne w witrynie Firebase.

Dodałem te wiersze we wskazanych miejscach.

classpath „com.google.gms: google-services: 3.0.0”

kompiluj „com.google.firebase: firebase-auth: 9.2.0”

zastosuj wtyczkę: „com.google.gms.google-services”

Ale metoda createUserWithEmailAndPassword nadal pokazywała błąd podczas tworzenia użytkowników. Dlatego odwiedziłem to pytanie, aby rozwiązać mój problem. Przeczytałem wszystkie i zastosowałem się do każdej rady. ale IT ciągle wykazywał niepowodzenie. Ale kiedy uaktualnię Android Studio from 2.1.1 to 2.1.2, mogłem pomyślnie tworzyć użytkowników.

Ale kiedy sprawdziłem logcat, najpierw pokazał, "Firebase API initialization failure"a potem pokazał „Inicjalizacja FirebaseApp powiodła się”.

07-09 18:53:37.012 13352-13352/jayground.firebasetest A/FirebaseApp: Firebase API initialization failure. How can I solve

to? java.lang.reflect.InvocationTargetException w java.lang.reflect.Method.invokeNative (metoda rodzima) w java.lang.reflect.Method.invoke (Method.java:515) w com.google.firebase.FirebaseApp.zza (nieznana Source) pod adresem com.google.firebase.FirebaseApp.initializeApp (nieznane źródło) pod adresem com.google.firebase.FirebaseApp.

Jayground
źródło
Dobrze. Dziękuję Ci. Pomyślałem, że dobrze byłoby podzielić się tym, jak rozwiązałem swój problem. (Tylko nie byłem pewien, czy rozwiązałem to całkowicie. Mogłem utworzyć użytkownika za pomocą com.google.firebase: firebase-auth: 9.2.0 po aktualizacji wersji Android Studio, ale nadal ma błąd inicjalizacji interfejsu API Firebase w logcat. Więc byłem zdziwiony ) Następnym razem użyję przycisku „ZADAJ pytanie”.
Jayground,
0

Napotkałem ten problem i zmieniam wersję aplikacji Gradle z 1.5.0 na 2.0.0.

zmień ścieżkę klasy

com.android.tools.build:gradle:1.5.0

do

classpath 'com.android.tools.build:gradle:2.0.0

Ankur
źródło
0

Rozwiązanie 1:

dependencies {
 compile `com.android.support:appcompat-v7:23.4.0`
 compile `com.android.support:support-v4:23.4.0`
 compile `com.android.support:design:23.4.0`
 compile `com.google.android.gms:play-services:9.0.0`
}

Rozwiązanie 2: Wykryj niezgodne w folderze .idie / libraries /. Kiedyś zadeklarujesz reklamy play-services: 8.4.0 jednocześnie z play-services-gcm: 9.0.0. Musisz nadpisać wykryte niezgodne biblioteki build.grade

Tho Pham
źródło