Facebook Account Kit Collision with Google play services gradle

前端 未结 4 1487
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-04 14:00

After configuring account kit sdk as

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

and gradle sync it conflict with com.goo

相关标签:
4条回答
  • 2021-01-04 14:37

    Possibly the conflict of libraries can be the reason. See dependencies here; https://mvnrepository.com/artifact/com.facebook.android/account-kit-sdk/4.27.0

    See if you could submit an issue with the facebook to update it.

    Or if you need facebook for authentication only, you can use Facebook Android Sdk

    0 讨论(0)
  • 2021-01-04 14:42

    What feature/service from firebase r u using , can u pls share the snippet of ur gradle dependencies for the same to better understand the problem here?

    0 讨论(0)
  • 2021-01-04 14:52

    For Unable to get provider RuntimeException exception it seems that, Application is not initialized first, Content Providers are initialized before it. And in Facebook account kit SDK's code it was trying to get my application context.

    Now the problem was, I did implement method getApplicationContext() in application class that is getting application shared variable but that variable was setting globally and Facebook Account Kit sdk code getting Null application context.

    Solution : setting shared variable in onCreate method instead of setting globally it resolved the problem of Unable to get provider.

    And For Mixing issue, Account Kit SDK use 11.0.1 version for play services gradle and in my project I am having 11.0.4 that is actually not the issue because on compile time gradle takes latest gradle but In my project I am not referring below gradle which Facebook Account Kit SDK is using.

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

    Solution : I have added above gradle with version 11.0.4 and the mixing gradle issue has been resolved.

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

    And as suggested by @astryk if I exclude play-services-auth-api-phone module then gradle mixing error is not showing but it is not including that module becasue in AccountKitActivity on next button click my application crashes as

    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`
    
    0 讨论(0)
  • 2021-01-04 14:58

    To fix this you can do something like the following

    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'
    

    That would remove the stale support gms library from Facebook's SDK and then swap in the same version of the lib that Firebase is using.

    0 讨论(0)
提交回复
热议问题