Не удается найти класс com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable

Мой build.gradle:

// for facebook account kit
compile 'com.facebook.android:account-kit-sdk:4.+'

// for google firebase database
compile 'com.google.firebase:firebase-database:9.6.0'

// for google firebase cloud messaging
compile 'com.google.firebase:firebase-messaging:9.6.0'

После перестроения проекта возникает ошибка.

Ошибка: (74, 27) ошибка: не удается получить доступ к AbstractSafeParcelable. Не удается найти класс com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable.

==============================================

Разрешение:

Причина в том, что после перестроения проекта gradle загрузите последнюю версию «account-kit-sdk» до 4.25.0, новая версия кое-что изменит в gms, поэтому возникнут конфликты с обменом сообщениями firebase,

Поэтому я понижаю версию account-kit-sdk, меняю версию импорта с «account-kit-sdk:4.+» на «account-kit-sdk:4.24.0».

Тогда проблема была решена.

Но я думаю, что это не лучшее решение этой проблемы.

Добро пожаловать, друзья, добавьте несколько новых способов решения этой проблемы.

Спасибо.


person keven    schedule 28.07.2017    source источник


Ответы (1)


Версия 4.25.0 com.facebook.android:account-kit-sdk имеет зависимость от com.google.android.gms:play-services-auth-api-phone:11.0.1, которой нет в версии 4.24.0. com.google.android.gms:play-services-auth-api-phone добавляет множество транзитивных зависимостей от других модулей com.google.android.gms, включая base, basement, tasks, auth и auth-base.

Библиотеки Firebase также имеют транзитивные зависимости от многочисленных com.google.android.gms модулей. Если номера версий всех модулей Firebase и Play Services в сборке не совпадают, возникают проблемы, подобные этой.

Простое решение — использовать версию 11.0.1 всех библиотек Firebase и Play Services, которые вы указали в своих зависимостях gradle:

// for google firebase database
compile 'com.google.firebase:firebase-database:11.0.1'

// for google firebase cloud messaging
compile 'com.google.firebase:firebase-messaging:11.0.1'

Вы также должны указать фиксированный номер версии для библиотеки Facebook, чтобы сделать вашу сборку предсказуемой и воспроизводимой:

compile 'com.facebook.android:account-kit-sdk:4.25.0'

Риск указания версии как «4.+» заключается в том, что при выпуске новой версии, которая имеет транзитивные зависимости от новой версии библиотек Play Services, будет автоматически использоваться новая версия библиотеки Facebook, и ваша сборка снова сломается.

Для отладки подобных проблем вы можете открыть окно Gradle в Android Studio и дважды щелкнуть :app -> Tasks -> android -> androidDependencies, чтобы создать дерево зависимостей. Затем дерево можно изучить, чтобы найти несоответствия версий.

person Bob Snyder    schedule 29.07.2017