IncompatibleClassChangeError после обновления до Android Build Tools 25.1.6 GCM / FCM

Поскольку я обновился до Android SDK Tools 25.1.6 и Android Support Repository 32.0.0 (сегодня утром), я получил следующую ошибку: я ничего не изменил в своем коде, и он все еще работает на моем коллегском компьютере (Android SDK Tools 25.1.1 + Репозиторий поддержки Android 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)

Вот фрагмент кода, который дает сбой:

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

Это когда я пытаюсь получить токен из Google Cloud Messaging.

Я импортирую GCM в Gradle с разделенными игровыми сервисами:

 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'

РЕДАКТИРОВАТЬ, отключение GCM устранило проблему, поэтому я предполагаю, что мне следует перейти на Firebase Cloud Message.

РЕДАКТИРОВАТЬ2. Мое устройство получает сервисы Google Play 9.0 (вчера было 8.4.x). Теперь он больше не вылетает, а жалуется на дескриптор модуля

 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.

Есть ли у кого-нибудь подобная ошибка, и как ее исправить?

ИСПРАВЛЕНО особая благодарность @stegranet. ./gradlew -q app:dependencies --configuration compile помогает определить, какие зависимости включают SDK 24.x

Основная проблема заключается в том, что некоторые библиотеки импортируют последнюю поддерживаемую библиотеку, используя знак + вместо версии. Это вызывает проблему из-за включения последней доступной версии.

Так что избегайте + входа в зависимости;)


comment
Я чувствую, что это не проблема инструментов сборки. Это связано с сервисом Google Play. Я использовал версию 9.0.0 и все еще получаю сообщение об ошибке, плюс жалобы на то, что моя подпись недействительна ...   -  person sonique    schedule 19.05.2016
comment
Как вы проверяете версию сервисов Google Play на своем мобильном телефоне? Я вижу Google Play Music, Games и т. Д., Но ничего похожего на сервисы Play.   -  person Arnold Balliu    schedule 22.05.2016
comment
Основная проблема заключалась в том, что некоторые модули библиотеки поддержки импорта использовали знак _1_ (как в вашем примере). Так что gradle включает последнюю версию, которая не подходит под наш случай. Спасибо!   -  person bschandramohan    schedule 02.11.2016


Ответы (15)


Я использовал дерево зависимостей gradle, чтобы решить эту ошибку.

Просто запустите gradle -q app:dependencies --configuration compile и проверьте вывод на наличие таких записей:

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

Как сказал Диего Джорджини, эта версия слишком высока (> = 24). Так что обновите зависимости в build.gradle, например

compile('com.mcxiaoke.viewpagerindicator:library:2.4.1') {
    exclude module: 'support-v4';
}
compile 'com.android.support:support-v4:23.4.0'
person stegranet    schedule 20.05.2016
comment
Я не понимаю, как Android может ввести ›= 24 зависимости в наш проект, если мы указываем все, как показано ниже 24. Это новая проблема, которая теперь заблокировала отладочные версии моего приложения и привела к некоторой путанице - тогда как версия магазина с тем же кодом кажется прекрасной - person sonique; 23.05.2016
comment
Спасибо stegranet за подтверждение. Мы просто выпускаем обновление, чтобы исправить это. Пожалуйста, попробуйте версию 9.0.1 - person Daniel Wilson; 27.05.2016
comment
Android Studio GradleView Plugin для анализа вашего проекта. - person Diego Giorgini; 28.05.2016
comment
где мне запустить следующий код? gradle -q app: dependencies --configuration compile - person jignesh; 14.07.2016
comment
@Roee запустите его в командной строке в корневом проекте студии Android, убедитесь, что вы загрузили gradle и добавили в переменные среды - person Roee; 02.08.2016
comment
Это единственное решение, которое, похоже, сработало, спасибо. Немного страшно, что подобные ошибки могут проскользнуть в производственные релизы, если вы не возражаете, если я скажу! - person Lucas Senechal; 12.08.2016

обновление 27 мая:

мы только что выпустили обновление (version 9.0.1), чтобы исправить несовместимость, о которой я упоминал в своем первом редактировании.
Пожалуйста, обновите свои зависимости и дайте нам знать, сохраняется ли проблема.

Спасибо!


исходный ответ 20 мая:

Проблема, с которой вы столкнулись, связана с несовместимостью между
play-services / firebase sdk v9.0.0 и com.android.support:appcompat-v7 >= 24
(версия, выпущенная с android-N sdk)

Вы сможете исправить это, выбрав более раннюю версию библиотеки поддержки. Нравиться:

compile 'com.android.support:appcompat-v7:23.4.0'
person Diego Giorgini    schedule 20.05.2016
comment
Я сделал это, обновил: - compile 'com.google.android.gms: play-services-gcm: 9.0.2' также com.google.gms: google-services: 3.0.0 ', но это приводит к ошибке multidex. Любая идея!! - person Daniel Wilson; 30.05.2016
comment
'com.google.android.gms: play-services-gcm: 9.0.2' по-прежнему имеет эту проблему - person Rohit; 09.06.2016
comment
Использование 9.0.2 для всех моих модулей play-services и com.google.gms: google-services: 3.0.0 в сборке проекта. Также используется недавно выпущенная библиотека поддержки 24.0.0. Мне удалось удалить ошибку, заменив compile 'com.google.android.gms: play-services-gcm: 9.0.2' на compile 'com.google.firebase: firebase-messaging: 9.0.2' - person Tom Bevelander; 24.06.2016
comment
Я получил эту ошибку при попытке изменить версию на 9.0.1 ›Исправьте конфликт версий, обновив версию плагина google-services (информация о последней версии доступна по адресу bintray.com/android/android-tools/) или обновив версию com.google. android.gms до 9.0.0. @Diego Giorgini - person c0deblooded; 25.06.2016
comment
У меня это сработало ... Я поменял все версии с 24.2.1 на 23.4.0, и getToken снова работает ... Это ужасно! Теперь боюсь обновлять версии. - person Roger Alien; 08.08.2016

мой работал со следующим:

уровень приложения Gradle

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'
}

градиент корневого уровня

dependencies {
    classpath 'com.google.gms:google-services:3.0.0'
}
person macbee    schedule 19.05.2016
comment
Спасибо, обновил google-services до 3.0.0, но это не помогает :( - person EZDsIt; 21.09.2016

Я обновил зависимости игровых сервисов в build.gradle

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

Чтобы исправить конфликт версий, либо обновив версию плагина google-services - мне пришлось обновить google-services в build.gradle в корневой папке проекта.

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

Вы можете получить последнее обновление служб Google здесь.

Хотя это не позволяет избежать исключения, но это больше не приводит к сбою приложения на моей стороне.

Обновить

Я мог избежать сбоя, обновив студию Android с бета-версии. Затем обновите свой platform/build-tools внутри SDK.

введите здесь описание изображения

person Reaz Murshed    schedule 19.05.2016
comment
В моем случае я получаю исключение в logcat, но оно больше не вылетает - person sonique; 19.05.2016
comment
хорошо, спасибо за отзыв. Вы используете Android Build Tools 25.1.6? - person Reaz Murshed; 19.05.2016
comment
вы правы, с play-services 9.0.0 работает, а с split-сервисами - нет :( - person sonique; 19.05.2016
comment
Я сделал это, обновил compile 'com.google.android.gms: play-services-gcm: 9.0.2' также com.google.gms: google-services: 3.0.0 ', но это приводит к ошибке multidex. Любая идея!! - person sonique; 19.05.2016
comment
Смотрите этот ответ. Это может вам помочь. stackoverflow.com/a/26724685/3145960 - person Rohit; 09.06.2016
comment
спасибо. Я тоже обновился до _1_, но проблема все еще есть. Сейчас я использую разделенный _2_. : _3_ - person Reaz Murshed; 09.06.2016

Обновление до последней версии сервисов Google Play устранило проблему для меня.

применить плагин: com.google.gms.google-services внизу ...

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

person Community    schedule 19.05.2016
comment
Я пытался скомпилировать с 9.0.0, но все та же проблема. - person sonique; 19.05.2016
comment
Я использую com.google.android.gms: play-services-gcm: 9.0.2, но проблема та же - person sonique; 19.05.2016
comment
похоже, что мы должны реализовать FCM - person Tom Bevelander; 16.06.2016

Произошло со мной из-за того, что facebook обновил его sdk, и у меня было

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

заменив его на

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

решил мою проблему.

Ссылка: https://developers.facebook.com/docs/android/change-log-4.x

person Vihaan Verma    schedule 28.09.2016

Включив все пакеты игровых сервисов

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

вы подавляете ошибку, но в конечном итоге получение токена GCM не работает, и мы не можем получить экземпляр GCM. Так что это не решение в моих книгах. Если кто-нибудь знает, что происходит, пожалуйста, просветите нас.

РЕДАКТИРОВАТЬ:

Я заменил GCM на firebase, обновил студию Android с 2.1 до 2.2, чтобы исправить проблему с мгновенным запуском с помощью аналитики firebase, обновил инструменты сборки до 24-rc4 и инструменты платформы до 24-rc3 и сохранил версию моей поддержки libs до 23.4.0. Кажется, сейчас все работает хорошо.

person Stilianos Tzouvaras    schedule 19.05.2016
comment
Я сделал это, но все равно получаю ту же ошибку. Я полностью удалил GCM и заменил его на FCM на основе этого: developers.google.com/cloud-messaging/android/ Что-то не так с библиотекой поддержки, а не с пакетами GCM или FCM. - person sonique; 19.05.2016
comment
как вернуть репозиторий поддержки Android? - person Stilianos Tzouvaras; 19.05.2016

У меня была такая же проблема, и возврат из репозитория поддержки Android 32.0.0 в репозиторий поддержки Android 31.0.0 решил ее.

person BorisK    schedule 22.05.2016
comment
Что ж, единственный способ, который я нашел, - это скопировать старый репозиторий вместо нового. Репозиторий обычно находится в папке Android, на которую указывает ваш «менеджер SDK» (если вы используете Mac, скорее всего, это путь ~ / Library / Android / sdk / extras). В папке extras замените папки android и google на старые. - person Pratama Nur Wijaya; 23.05.2016
comment
Я нашел репо здесь: dl-ssl.google.com/android/repository/, затем распаковать его в ../sdk/extras/android и удалить существующий m2reposity , похоже, пока работает. - person BorisK; 25.05.2016
comment
Привет, @Skygirl, я следую твоему примеру, есть ли какие-то особые требования в AndroidManifest? Не могли бы вы добавить эту часть кода? Спасибо - person Tom Redman; 08.06.2016

Для push-уведомлений Android с GCM 2016:

1) в Android SDK-> SDK Tools проверьте сервисы Google Play

2) в gradle добавьте в зависимости только одну строку:

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

(нет конкретного пути к классам, и он работает для меня)

3) необходимо создать 3 класса (GCMPushReceiverService, GCMRegistrationIntentService, GCMTokenRefreshListenerService)

4.1) код для 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) Код для GCMRegistrationIntentService (измените authorizedEntity на номер вашего проекта):

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) Код для 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) Не забудьте изменить название пакета

6) В mainActivity вставьте этот код:

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) В вашем AndroidManifest.xml добавьте следующие строки:

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

8) в консоли logcat скопируйте свой токен и вставьте на этот сайт добавьте номер вашего проекта, ваш токен и сообщение. У меня нормально работает :)

person skygirl    schedule 04.08.2016
comment
Ok. Спасибо. Подумал, было бы хорошо рассказать, как я решил свою проблему. (Просто я не был уверен, решил ли я это полностью. Я мог создать пользователя с помощью com.google.firebase: firebase-auth: 9.2.0 после обновления версии Android Studio, но у него все еще есть ошибка инициализации Firebase API в logcat. Поэтому мне было интересно ) В следующий раз я воспользуюсь кнопкой «Задать вопрос». - person ziniestro; 06.08.2016

По прошествии целого дня я могу на 100% подтвердить, что библиотека Optimizely также каким-то образом конфликтует и вызывает эту ошибку. Чтобы быть конкретным, я использую Optimizely через Fabric. Невозможно заставить Firebase инициализироваться при использовании Optimizely таким образом (может быть, всеми способами?).

Я написал об этом на их гитхабе и свяжусь с ними напрямую ...

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

person Steven Elliott    schedule 20.05.2016

У меня такая же проблема. Я обновил инструменты SDK до 25.1.7 rc1, после чего проблема исчезла.

person Tony Lin    schedule 22.05.2016

обновил инструменты SDK до версии 25.1.7 и исправил эту проблему.

person austin    schedule 08.06.2016

Что ж, я только новичок в использовании Android. Я хотел протестировать создание пользователей в Firebase, следуя инструкциям на веб-сайте Firebase.

Я добавил эти строки в указанных местах.

classpath 'com.google.gms: google-services: 3.0.0'

скомпилировать 'com.google.firebase: firebase-auth: 9.2.0'

применить плагин: 'com.google.gms.google-services'

Но метод createUserWithEmailAndPassword продолжал показывать неудачи при создании пользователей. Вот почему я посетил этот вопрос, чтобы разобраться в своей проблеме. Я прочитал все и применил каждый совет. но ОНО продолжало показывать неудачи. Но когда я обновился Android Studio from 2.1.1 to 2.1.2, я смог успешно создавать пользователей.

Но когда я проверил logcat, он сначала показал "Firebase API initialization failure", а затем показал «Инициализация FirebaseApp прошла успешно».

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

Я столкнулся с этой проблемой, и я изменил версию Gradle моего приложения с 1.5.0 на 2.0.0.

person Jayground    schedule 09.07.2016
comment
это? java.lang.reflect.InvocationTargetException в java.lang.reflect.Method.invokeNative (собственный метод) в java.lang.reflect.Method.invoke (Method.java:515) в com.google.firebase.FirebaseApp.zza (Неизвестно Источник) на com.google.firebase.FirebaseApp.initializeApp (Неизвестный источник) на com.google.firebase.FirebaseApp.initializeApp (Неизвестный источник) на com.google.firebase.FirebaseApp.zzeh (Неизвестный источник) на com.google.firebase .provider.FirebaseInitProvider.o nCreate (Неизвестный источник) в android.content.ContentProvider.attachInfo (ContentProvider.java:1591) в android.content.ContentProvider.attachInfo (ContentProvider.java:1562) в com.google.firebase.provider.FirebaseInitProvider.attachInfo (Неизвестный источник ) в android.app.ActivityThread.installProvider (ActivityThread.java:5118) в android.app.ActivityThread.installContentProviders (ActivityThread.java:4713) в android.app.ActivityThread.handleBindApplication (ActivityThread.java:4596) в android.app.ActivityThread.access $ 1600 (ActivityThread.java:169) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1340) в android.os.Handler.dispatchMessage (Handler.java:102) на android .Операционные системы. Looper.loop (Looper.java:146) в android.app.ActivityThread.main (ActivityThread.java:5487) в java.lang.reflect.Method.invokeNative (собственный метод) в java.lang.reflect.Method.invoke ( Method.java:515) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1283) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1099) в dalvik.system .NativeStart.main (собственный метод) Вызвано: java.lang.NoSuchMethodError: com.google .android.gms.common.internal.zzaa.zzz на com.google.android.gms.measurement.internal.zzx.zzbd (Неизвестный источник) на com.google.android.gms.measurement.AppMeasurement.getInstance (Неизвестный источник) в java.lang.reflect.Method.invokeNative (собственный метод) в java.lang.reflect.Method.invoke (Method.java:515) в com.google.firebase.FirebaseApp.zza (неизвестный источник) на com.google. firebase.FirebaseApp.initializeApp (Неизвестный источник) на com.google.fire base.FirebaseApp.initializeApp (Неизвестный источник) в com.google.firebase.FirebaseApp.zzeh (Неизвестный источник) в com.google.firebase.provider.FirebaseInitProvider.onCreate (Неизвестный источник) в android.content.ContentProvider.attachInfo (ContentProvider. java: 1591) в android.content. ContentProvider.attachInfo (ContentProvider.java:1562) на com.google.firebase.provider.FirebaseInitProvider.attachInfo (Неизвестный источник) на android.app.ActivityThread.installProvider (ActivityThread.java:5118) на android.app.ActivityThread.installContentProvider ActivityThread.java:4713) в android.app.ActivityThread.handleBindApplication (ActivityThread.java:4596) в android.app.ActivityThread.access $ 1600 (ActivityThread.java:169) в android.app.ActivityThread $ H.handleMessage (ActivityThread. java: 1340) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:146) на android.app.ActivityThread.main (ActivityThread.java:5487) на java.lang. Reflect.Method.invokeNative (собственный метод) в java.lang.reflect.Method.invoke (Method.java:515) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1283) в com. android.internal.os.ZygoteInit.main (ZygoteInit.java:1099) в dalvik.system.NativeStart.main (собственный метод) 07-09 18: 53: 37.022 13352-13352 / jayground.firebasetest I / FirebaseInitProvider: инициализация FirebaseApp прошла успешно - person Jayground; 09.07.2016

изменить путь к классам

Решение 1:

com.android.tools.build:gradle:1.5.0

to

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

person Ankur    schedule 09.08.2016

Решение 2.Обнаружение несовместимости в папке .idie / libraries /. Через некоторое время вы объявляете play-services-ads: 8.4.0 одновременно с play-services-gcm: 9.0.0. Вы должны переопределить на build.grade обнаруженные вами несовместимые библиотеки

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`
}

Судя по всему, Google Cloud Messaging стал Firebase Cloud Messaging: firebase.google.com/docs/cloud-messaging не уверен, связано ли это, все еще исследую.

person Tho Pham    schedule 09.08.2016