2017-02-17 1 views
2

Я разрабатываю приложение для Android с помощью Android Studio и сегодня получил сообщение о том, что есть новая версия сервисов Google Play.Проблемы с обновлением PlayServices/Firebase от 10.0.1 до 10.2.0

Я пользуюсь Google Analytics, рекламой и менеджером тегов Google. Также как аналитика Firebase/обмен сообщениями/сбой.

версия у меня в build.gradle был 10.0.1 и новая версия 10.2.0 Но когда я изменить его, приложение падает на старте с:

E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.sega.segaid, PID: 15749 
java.lang.NoSuchMethodError: com.google.android.gms.internal.zzaac.zza 
    at com.google.firebase.FirebaseApp.zzcl(Unknown Source) 
    at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
    at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
    at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
    at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) 
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1591) 
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1562) 
    at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) 
    at android.app.ActivityThread.installProvider(ActivityThread.java:4964) 
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4559) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4499) 
    at android.app.ActivityThread.access$1600(ActivityThread.java:153) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5191) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:810) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    at dalvik.system.NativeStart.main(Native Method) 

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

В прошлый раз что-то подобное произошло, это была ошибка в Firebase, которая была исправлена ​​Google через несколько дней.

EDIT: зависимости build.gradle

compile 'com.android.support:appcompat-v7:25.1.1' 
compile 'com.android.support:support-v13:25.1.1' 
compile 'com.android.support:design:25.1.1' 

compile 'com.google.android.gms:play-services-base:10.2.0' 
compile 'com.google.android.gms:play-services-tagmanager:10.2.0' 
compile 'com.google.android.gms:play-services-ads:10.2.0' 
compile 'com.google.android.gms:play-services-analytics:10.2.0' 
compile 'com.google.firebase:firebase-core:10.2.0' 
compile 'com.google.firebase:firebase-analytics:10.2.0' 
compile 'com.google.firebase:firebase-messaging:10.2.0' 
compile 'com.google.firebase:firebase-crash:10.2.0' 

РЕШЕНИЕ: Я очистил все кэши, а также добавили версию, как Def вместо этого, если писать его каждый раз. Теперь это сработало. Всем спасибо.

Я выбрал ответ rencsaridogan как решение, потому что, по-моему, я забыл обновить одну из библиотек при первой попытке, и def действительно полезен там. Но мне также нужно было очистить кеши (как рекомендовано Avi в комментариях ниже).

+0

Пожалуйста, добавьте ваш файл градиента. Также попробуйте очистить и синхронизировать проект. –

+1

попробуйте очистить и перестроить проект. – Avi

+2

Убедитесь, что все ваши сервисы Google play и версия firebase находятся в файле gradle 10.2.0. –

ответ

2

Есть 2 важных момента использования Google Play Services и использования Firebase, как указано в official documentation.

Вы должны объявить последний путь к классам сервисов Google Play в вашем корневом уровне Gradle, например, цитата из данной документации:

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

Кроме того, в качестве комментариев предложить в вашем проекте каждый Google Play Services и Пакет для Firebase должен иметь такую ​​же версию, чтобы гарантировать, что вы можете следовать приведенному ниже методу (это будет проще, вам нужно только обновить номер версии по определениям)

def googlePlayLibVersion = "10.2.0" 
def googleFirebaseLibVersion = "10.2.0" 

ext { 
    annotations = "com.android.support:support-annotations:${supportLibVersion}" 
    firebaseAnalytics = "com.google.firebase:firebase-core:${googleFirebaseLibVersion}" 
    firebaseCrash = "com.google.firebase:firebase-crash:${googleFirebaseLibVersion}" 
    googlePlayAds = "com.google.android.gms:play-services-ads:${googlePlayLibVersion}" 
    googlePlayGcm = "com.google.android.gms:play-services-gcm:${googlePlayLibVersion}" 
    googlePlayAnalytics = "com.google.android.gms:play-services-analytics:${googlePlayLibVersion}" 
} 
+0

Я включил ее в градиент уровня корня. Деф выглядит как хорошая идея, я попробую это сделать. – Cubicle257

+0

@ Cubicle257 рад поделиться! Надеюсь, это вам поможет. – rencsaridogan

+0

Хотя я также нуждался в очистке кэшей, я выбрал ваш ответ как решение, потому что def определенно оказался полезным. – Cubicle257

Смежные вопросы