Столкновение учетной записи Facebook с сервисом Google Play Gradle

После настройки аккаунта комплект sdk as

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

и Gradle синхронизировать это конфликтует с com.google.android.gms gradle смешивание версий может привести к сбоям во время выполнения и к сбою приложения

Ошибка инициализации API Firebase. java.lang.reflect.InvocationTargetException на java.lang.reflect.Method.invoke(собственный метод) на com.google.firebase.FirebaseApp.zza(неизвестный источник) на...

вышеупомянутая ошибка связана с смешиванием gradle служб Google Play (я думаю, что Google Play Services Gradle может использоваться SDK Account Account Kit SDK), потому что у меня одна и та же версия для всех уровней обслуживания Google Play.

И еще один сбой идет со стороны SDK Facebook Account Kit, как

 java.lang.RuntimeException: Unable to get provider com.facebook.accountkit.internal.AccountKitInitProvider: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
                                                       at android.app.ActivityThread.installProvider(ActivityThread.java:5260)
                                                       at android.app.ActivityThread.installContentProviders(ActivityThread.java:4808)
                                                       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4748)
                                                       at android.app.ActivityThread.access$1700(ActivityThread.java:153)
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1436)
                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                       at android.os.Looper.loop(Looper.java:154)
                                                       at android.app.ActivityThread.main(ActivityThread.java:5529)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
                                                    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
                                                       at com.facebook.accountkit.internal.Initializer.initialize(Initializer.java:99)
                                                       at com.facebook.accountkit.internal.AccountKitController.initialize(AccountKitController.java:592)
                                                       at com.facebook.accountkit.internal.AccountKitInitProvider.onCreate(AccountKitInitProvider.java:31)
                                                       at android.content.ContentProvider.attachInfo(ContentProvider.java:1758)
                                                       at android.content.ContentProvider.attachInfo(ContentProvider.java:1733)
                                                       at android.app.ActivityThread.installProvider(ActivityThread.java:5257)
                                                       at android.app.ActivityThread.installContentProviders(ActivityThread.java:4808) 
                                                       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4748) 
                                                       at android.app.ActivityThread.access$1700(ActivityThread.java:153) 
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1436) 
                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                       at android.os.Looper.loop(Looper.java:154) 
                                                       at android.app.ActivityThread.main(ActivityThread.java:5529) 
                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) 
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) 

Но после удаления

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

мое приложение работает без проблем. Но чтобы интегрировать Facebook Account Kit в мое приложение, я должен включить вышеупомянутую версию, которая конфликтует с сервисами Google Play.

Полностью разочарован, пожалуйста, помогите.


После обновления Firebase Gradle как

compile 'com.google.firebase:firebase-messaging:11.6.0'

это не сталкивается, но все еще дает выше RuntimeException из Account Kit SDK.

4 ответа

Решение

При невозможности получить исключение RuntimeException провайдера кажется, что сначала приложение не инициализируется, а провайдеры содержимого инициализируются раньше него. И в коде SDK набора учетных записей Facebook он пытался получить контекст моего приложения.

Теперь проблема была, я реализовал метод getApplicationContext() в классе приложения, который получает переменную общего доступа приложения, но эта переменная была задана глобально, а sdk-код Facebook Account Kit получает контекст приложения Null.

Решение: установка общей переменной в методе onCreate вместо глобальной настройки позволила решить проблему невозможности получить поставщика.

И для проблемы микширования, Account Kit SDK использует версию 11.0.1 для gradle игровых сервисов, и в моем проекте у меня 11.0.4, что на самом деле не проблема, потому что во время компиляции gradle принимает последнюю версию, но в моем проекте я не ссылаюсь ниже gradle, какой SDK Account Account Kit использует.

compile 'com.google.android.gms:play-services-auth-api-phone:11.0.1'

Решение: я добавил выше gradle с версией 11.0.4, и проблема с градиентом смешивания была решена.

compile 'com.google.android.gms:play-services-auth-api-phone:11.0.4'

И как предложено @astryk, если я исключу play-services-auth-api-phone модуль затем ошибка смешивания gradle не отображается, но он не включает этот модуль, потому что в AccountKitActivity при следующем нажатии кнопки мое приложение вылетает как

Crash Report Thread:main Exception:java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/auth/api/phone/SmsRetriever;
at com.facebook.accountkit.internal.PhoneLoginController.createSmsToken(PhoneLoginController.java:250)
at com.facebook.accountkit.internal.PhoneLoginController.logIn(PhoneLoginController.java:188)
at com.facebook.accountkit.internal.LoginManager.logInWithPhoneNumber(LoginManager.java:372)
at com.facebook.accountkit.internal.AccountKitController.logInWithPhoneNumber(AccountKitController.java:631)
at com.facebook.accountkit.ui.PhoneLoginFlowManager.logInWithPhoneNumber(PhoneLoginFlowManager.java:57)
at com.facebook.accountkit.ui.ActivityPhoneHandler.onPhoneLoginComplete(ActivityPhoneHandler.java:189)
at com.facebook.accountkit.ui.AccountKitActivity$1.onReceive(AccountKitActivity.java:176)
at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297)
at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46)
at android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:116)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:5529)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.auth.api.phone.SmsRetriever" on path: DexPathList[[zip file "/data/app/com.myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myappList item -1/lib/arm64, /vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
... 16 more
Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.auth.api.phone.SmsRetriever
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 17 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available`

Чтобы это исправить, вы можете сделать что-то вроде следующего

compile ('com.facebook.android:account-kit-sdk:4.27.0') {
        exclude group: 'com.google.android.gms', module: 'play-services-auth-api-phone'
        exclude group: 'com.google.android.gms', module: 'play-services-auth'
    }
    compile 'com.google.android.gms:play-services-auth:11.6.0'
    compile 'com.google.firebase:firebase-messaging:11.6.0'

Это удалит устаревшую библиотеку gms поддержки из SDK Facebook, а затем поменяет ту же версию библиотеки, которую использует Firebase.

Возможно, причиной может быть конфликт библиотек. Смотрите зависимости здесь; https://mvnrepository.com/artifact/com.facebook.android/account-kit-sdk/4.27.0

Посмотрите, можете ли вы отправить вопрос на Facebook, чтобы обновить его.

Или, если вам нужен только Facebook для аутентификации, вы можете использовать Facebook Android Sdk

Какие функции / сервисы из firebase r u используют, можете ли вы поделиться фрагментом своих зависимостей, чтобы лучше понять проблему здесь?

Другие вопросы по тегам