Skip to content

Crash if no internet available, Twitter #1057

@thomsan

Description

@thomsan

1: Are you in the right place?

yes

Step 2: Describe your environment

  • Android device: Samsung Galaxy S6
  • Android OS version: 7.0
  • Google Play Services version: 11.9.51
  • Firebase/Play Services SDK version: 11.4.2
  • FirebaseUI version: 3.1.0

Step 3: Describe the problem:

If I'm signed out and don't have internet connection the app crashes on startup.
The logs say something related to Twitter can't be found, even though I don't use Twitter authentication.
I only use Google and Email authentication.

Steps to reproduce:

  1. Sign out, if previously signed in
  2. Turn on Airplane mode
  3. Start app

Observed Results:

Immediate app crash with following output:

12-15 16:38:18.483 3689-3689/example.com I/art: Rejecting re-init on previously-failed class java.lang.Class<com.firebase.ui.auth.provider.TwitterProvider>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/twitter/sdk/android/core/Callback;
12-15 16:38:18.483 3689-3689/example.com I/art:     at void com.firebase.ui.auth.AuthUI$IdpConfig$Builder.<init>(java.lang.String) (AuthUI.java:382)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void example.com.MainActivity$3.onAuthStateChanged(com.google.firebase.auth.FirebaseAuth) (MainActivity.java:189)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void com.google.firebase.auth.zzi.run() ((null):-1)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:751)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:95)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void android.os.Looper.loop() (Looper.java:154)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6682)
12-15 16:38:18.483 3689-3689/example.com I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1520)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1410)
12-15 16:38:18.483 3689-3689/example.com I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.twitter.sdk.android.core.Callback" on path: DexPathList[[zip file "/data/app/example.com-1/base.apk", zip file "/data/app/example.com-1/split_lib_dependencies_apk.apk", zip file "/data/app/example.com-1/split_lib_slice_0_apk.apk", zip file "/data/app/example.com-1/split_lib_slice_1_apk.apk", zip file "/data/app/example.com-1/split_lib_slice_2_apk.apk", zip file "/data/app/example.com-1/split_lib_slice_3_apk.apk", zip file "/data/app/example.com-1/split_lib_slice_4_apk.apk", zip file "/data/app/example.com-1/split_lib_slice_5_apk.apk", zip file "/data/app/example.com-1/split_lib_slice_6_apk.apk", zip file "/data/app/example.com-1/split_lib_slice_7_apk.apk", zip file "/data/app/example.com-1/split_lib_slice_8_apk.apk", zip file
12-15 16:38:18.483 3689-3689/example.com I/art:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
12-15 16:38:18.483 3689-3689/example.com I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
12-15 16:38:18.483 3689-3689/example.com I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void com.firebase.ui.auth.AuthUI$IdpConfig$Builder.<init>(java.lang.String) (AuthUI.java:382)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void example.com.MainActivity$3.onAuthStateChanged(com.google.firebase.auth.FirebaseAuth) (MainActivity.java:189)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void com.google.firebase.auth.zzi.run() ((null):-1)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:751)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:95)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void android.os.Looper.loop() (Looper.java:154)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6682)
12-15 16:38:18.483 3689-3689/example.com I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1520)
12-15 16:38:18.483 3689-3689/example.com I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1410)

Expected Results:

  • What did you expect to happen?

Relevant Code:

  private FirebaseAuth.AuthStateListener createAuthStateListener(){
      return new FirebaseAuth.AuthStateListener() {
          @Override
          public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
              FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
              FirebaseUtils.setFirebaseUser(firebaseUser);
              if(firebaseUser != null){
                  // user is signed in
                  onSignedInInitialize();
              } else {
                  // user is signed out
                  onSignedOutCleanup();
                  // Choose authentication providers
189>>>            List<AuthUI.IdpConfig> providers = Arrays.asList(
                          new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
                          new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build());
                  
                  // Create and launch sign-in intent
                  startActivityForResult(
                          AuthUI.getInstance()
                                  .createSignInIntentBuilder()
                                  .setIsSmartLockEnabled(true)
                                  .setAvailableProviders(providers)
                                  .build(),
                          RC_SIGN_IN);
              }
          }
      };
  }

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions