我正在尝试将 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,虽然在 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。)
冉冉说
回首忆惘然
相关分类