java.lang.NoClassDefFoundError: Сбой разрешения: Lcom / google / firebase / FirebaseApp $ IdTokenListener; - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь использовать Firebase для простого приложения CRUD для Android, но во время создания ссылки на базу данных Firebase я сталкиваюсь со следующим исключением во время выполнения:

java.lang.RuntimeException: Uncaught exception in Firebase Database runloop (3.0.0). Please report to firebase-database-client@google.com
    at com.google.firebase.database.android.AndroidPlatform$1$1.run(com.google.firebase:firebase-database@@16.1.0:98)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    ....
    ....
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/FirebaseApp$IdTokenListener;
    ....
    ....
    at com.satwick.employeecrud.MainActivity.onCreate(MainActivity.java:76)

Я прошел через StackOverflow, и хотябыло много случаев NoClassDefFoundError в Firebase, ни один из которых не был около IdTokenListener.В основном я понял, что это могло быть ошибкой пропуска некоторых шагов при настройке базы данных Firebase.Поэтому я перепроверил все шаги:

  1. Убедитесь, что мое приложение зарегистрировано в проекте Firebase с правильной подписью SHA1.
  2. google-services.json включен в каталог моего приложения.
  3. firebase правильно загружен в файлы приложения и приложения gradle.(Я могу завершить проверку подлинности по номеру телефона, поэтому я почти уверен.)

В методе onCreate ():

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Initialize Firebase Auth
        mFirebaseAuth = FirebaseAuth.getInstance();
        mFirebaseUser = mFirebaseAuth.getCurrentUser();

        if (mFirebaseUser == null) {
            List<AuthUI.IdpConfig> providers = Arrays.asList(new AuthUI.IdpConfig.PhoneBuilder().build());

            startActivityForResult(
                    AuthUI.getInstance()
                            .createSignInIntentBuilder()
                            .setAvailableProviders(providers)
                            .build(),
                    RC_SIGN_IN);
        } else {
            mUsername = mFirebaseUser.getDisplayName();
        }

        // MainActivity.java:76 The following line causes the exception.
        mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference(); 
    }

Это ошибка в Firebase?Или я что-то не так делаю?Пожалуйста, помогите.

Кроме того, я не знаю, связано ли это или нет, но у меня есть два приложения, зарегистрированных в одном проекте Firebase, с одним и тем же ключом подписи (по умолчанию Android Studio SHA1.)

РЕДАКТИРОВАТЬ 1 - Добавление зависимостей {} из build.gradle:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.1.0-alpha07'

    // Google
    implementation 'com.google.android.gms:play-services-auth:16.0.1'

    // Firebase
    implementation 'com.google.firebase:firebase-core:16.0.9'
    implementation platform('com.google.firebase:firebase-bom:17.0.0')

    implementation 'com.google.firebase:firebase-database'
    implementation 'com.google.firebase:firebase-storage'
    implementation 'com.google.firebase:firebase-auth:17.0.0'
    implementation 'com.firebaseui:firebase-ui-auth:4.3.1'

    // Firebase UI
    implementation 'com.firebaseui:firebase-ui-database:3.3.1'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

1 Ответ

1 голос
/ 05 июня 2019

Я использовал некоторые нежелательные библиотеки в build.gradle, поэтому очистил беспорядок для следующих импортов для Firebase:

// Firebase
implementation 'com.google.firebase:firebase-core:16.0.9'
implementation 'com.google.firebase:firebase-auth:17.0.0'

// Firebase UI
implementation 'com.firebaseui:firebase-ui-auth:5.0.0'
implementation 'com.firebaseui:firebase-ui-database:5.0.0'

Следовательно, я попытался обновить версию firebase-ui из 4.3.1-> 5.0.0, и это сработало.

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