我正在嘗試將 Firebase 用于簡單的 CRUD android 應用程序,但是在實例化 Firebase 數據庫引用時,我在運行時遇到以下異常:java.lang.RuntimeException: Uncaught exception in Firebase Database runloop (3.0.0). Please report to [email protected] 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,雖然在 Firebase 中有很多 NoClassDefFoundError 案例,但沒有一個是關于IdTokenListener. 我主要意識到這可能是在設置 Firebase 數據庫時缺少某些步驟的錯誤。所以我重新檢查了所有步驟:確保我的應用已在 Firebase 項目中注冊,并使用正確的 SHA1 簽名。google-services.json 包含在我的應用程序目錄中。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。)
2 回答

冉冉說
TA貢獻1877條經驗 獲得超1個贊
我在 中使用了一些不需要的庫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 更新,并且成功了。

回首憶惘然
TA貢獻1847條經驗 獲得超11個贊
我嘗試將我的版本從
實施 'com.firebaseui:firebase-ui-auth: 4.3.1 '
到
實施 'com.firebaseui:firebase-ui-auth: 4.3.0 '
和
實施 'com.google.firebase:firebase-database: 19.2.0 '
到
實施 'com.google.firebase:firebase-database: 16.0.4 '
它奏效了