Facebook login button failed if facebook application is not installed

My facebook login button works fine when the facebook app is installed.

When the facebook application is not installed on the device, it disables my application:

E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/customtabs/CustomTabsIntent$Builder; at com.facebook.internal.CustomTab.openCustomTab(CustomTab.java:47) at com.facebook.CustomTabMainActivity.onCreate(CustomTabMainActivity.java:67) at android.app.Activity.performCreate(Activity.java:6251) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.customtabs.CustomTabsIntent$Builder" on path: DexPathList[[zip file "/data/app/com.testapp-2/base.apk"],nativeLibraryDirectories=[/data/app/com.testapp-2/lib/arm, /data/app/com.testapp-2/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at com.facebook.internal.CustomTab.openCustomTab(CustomTab.java:47) at com.facebook.CustomTabMainActivity.onCreate(CustomTabMainActivity.java:67) at android.app.Activity.performCreate(Activity.java:6251) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Suppressed: java.lang.ClassNotFoundException: android.support.customtabs.CustomTabsIntent$Builder 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) ... 15 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available 

MANIFESTO:

 <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity> 

while the value of fb_login_protocol_scheme starts with "fb" as necessary.

Gradle Dependencies:

 dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:25.3.0' compile 'com.android.support:design:25.3.0' compile 'com.google.firebase:firebase-core:10.2.1' compile 'com.google.firebase:firebase-database:10.2.1' compile 'com.google.firebase:firebase-ads:10.2.1' compile ('com.facebook.android:facebook-android-sdk:4.20.0') // app invites { exclude group: 'com.android.support' } compile 'com.facebook.android:audience-network-sdk:4.20.0' compile "com.android.support:cardview-v7:25.3.0" testCompile 'junit:junit:4.12' } 

How can I solve it?

+5
source share
2 answers

You exclude "com.android.support" from the facebook dependency. I assume this is because it did not include the same version of the support libraries as you (facebook sdk 4.20.0 uses android: support: 25.0.0, but you enable support libraries 25.3.0, so excluding this )

But if you want the CustomTab function to work, you must enable the appropriate dependency depending on your application, so add the following line:

 compile 'com.android.support:customtabs:25.3.0' 

and it should work.

+8
source

I think you should check if facebook is installed. Take a look at this answer:

fooobar.com/questions/108653 / ...

-2
source

Source: https://habr.com/ru/post/1266647/


All Articles