Firebase Android - cra sh "NoClassDefFoundError" - PullRequest
0 голосов
/ 07 апреля 2020

Я использую Firebase, все работало нормально, пока я не получил эту ошибку:

Ошибка

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.world.bolandian.talent, PID: 8150
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/Api$zzf;
    at com.google.android.gms.auth.api.Auth.<clinit>(Unknown Source:0)
    at com.firebase.ui.auth.util.signincontainer.SignInDelegate.onCreate(SignInDelegate.java:101)
    at androidx.fragment.app.Fragment.performCreate(Fragment.java:2414)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1418)
    at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
    at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802)
    at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
    at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
    at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
    at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
    at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273)
    at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229)
    at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)
    at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:620)
    at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1392)
    at android.app.Activity.performStart(Activity.java:7252)
    at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2970)
    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:201)
    at android.app.ActivityThread.main(ActivityThread.java:6806)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.api.Api$zzf" on path: DexPathList[[zip file "/data/app/com.world.bolandian.talent-TuzLscPLR_q0d5UNoULItA==/base.apk"],nativeLibraryDirectories=[/data/app/com.world.bolandian.talent-TuzLscPLR_q0d5UNoULItA==/lib/arm64, /data/app/com.world.bolandian.talent-TuzLscPLR_q0d5UNoULItA==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at com.google.android.gms.auth.api.Auth.<clinit>(Unknown Source:0) 
    at com.firebase.ui.auth.util.signincontainer.SignInDelegate.onCreate(SignInDelegate.java:101) 
    at androidx.fragment.app.Fragment.performCreate(Fragment.java:2414) 
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1418) 
    at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) 
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) 
    at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802) 
    at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625) 
    at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411) 
    at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366) 
    at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) 
    at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273) 
    at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229) 
    at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:201) 
    at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:620) 
    at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:178) 
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1392) 
    at android.app.Activity.performStart(Activity.java:7252) 
    at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2970) 
    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180) 
    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165) 
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:201) 
    at android.app.ActivityThread.main(ActivityThread.java:6806) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) 

Через много часов я обнаружил, что эти строки код, вызывающий эту проблему

        List<AuthUI.IdpConfig> providers = Arrays.asList(
            new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER)
                    .setPermissions(Arrays.asList(Scopes.PROFILE,Scopes.EMAIL)).build(),
            new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
            new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build());


    Intent intent = AuthUI.getInstance()
            .createSignInIntentBuilder()
            .setLogo(R.drawable.exo_controls_play)
            .setTheme(R.style.Theme_AppCompat_DayNight)
            .setPrivacyPolicyUrl("https://www.facebook.com/eran1991")
            .setAvailableProviders(providers).build();
    startActivityForResult(intent,RC_SIGN_IN);

Я думаю, что это может быть потому, что AuthUI. Что я должен сделать, чтобы это исправить. Это говорит о том, что класс не может быть найден, есть ли смысл?

Gradle

    implementation 'com.google.firebase:firebase-crash:11.4.2'
implementation 'androidx.appcompat:appcompat:1.0.2'
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.beardedhen:androidbootstrap:2.3.2'
implementation 'com.github.mukeshsolanki:country-picker-android:1.1.9'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.mikhaellopez:circularimageview:3.0.2'
implementation 'com.iceteck.silicompressorr:silicompressor:2.1'
implementation 'com.github.clans:fab:1.6.4'
implementation 'com.google.code.gson:gson:2.8.0'

implementation 'com.github.bumptech.glide:glide:4.3.1'
//for image blur
implementation 'jp.wasabeef:glide-transformations:4.0.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1'

implementation 'com.firebaseui:firebase-ui-auth:3.1.0'
implementation 'com.firebaseui:firebase-ui-database:3.1.0'
implementation 'com.google.firebase:firebase-auth:19.1.0'
implementation 'com.google.firebase:firebase-messaging:20.0.0'
implementation 'com.google.firebase:firebase-storage:19.1.0'
implementation 'com.google.firebase:firebase-database:19.1.0'


//Retrofit Gson converter
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
//Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.4.0'

//Exoplayer for videos and audio
implementation 'com.google.android.exoplayer:exoplayer:2.10.4'

implementation 'com.facebook.android:facebook-android-sdk:4.42.0'
implementation 'com.github.jkwiecien:EasyImage:2.0.2'
implementation 'com.android.support:multidex:1.0.3'
testCompile 'junit:junit:4.12'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

Кто-нибудь знает, что происходит?

Редактировать

Также мне пришлось изменить код:

    public void startSignIn(){
    List<AuthUI.IdpConfig> providers = Arrays.asList(
            new AuthUI.IdpConfig.EmailBuilder().build(),
            new AuthUI.IdpConfig.GoogleBuilder().build(),
            new AuthUI.IdpConfig.FacebookBuilder().build());

    Intent intent = AuthUI.getInstance()
            .createSignInIntentBuilder()
            .setLogo(R.drawable.exo_controls_play)
            .setTheme(R.style.Theme_AppCompat_DayNight)
            .setPrivacyPolicyUrl("https://www.facebook.com/eran1991")
            .setAvailableProviders(providers).build();
    startActivityForResult(intent,RC_SIGN_IN);
}

1 Ответ

1 голос
/ 07 апреля 2020

Обновите зависимость FirebaseUI до следующего:

implementation 'com.firebaseui:firebase-ui-auth:6.2.1'
implementation 'com.firebaseui:firebase-ui-database:6.2.1'

Проверьте здесь для получения дополнительной информации:

https://github.com/firebase/FirebaseUI-Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...