Firestore getProductID 不能为 null 错误

我正在尝试在我的Android应用程序中使用Firebase发布的新Firestore。不幸的是,在尝试写入数据库时,我一直收到此错误。

public class MainActivity extends AppCompatActivity {

EditText txtName,txtSurname;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar =  findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    txtName = findViewById(R.id.Name);
    txtSurname = findViewById(R.id.Surname);

    FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            FirebaseFirestore db = FirebaseFirestore.getInstance();

            Map<String, Object> user = new HashMap<>();
            user.put("first", "Ada");
            user.put("last", "Lovelace");
            user.put("born", 1815);

            db.collection("users")
                    .add(user)
                    .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                        @Override
                        public void onSuccess(DocumentReference documentReference) {
                            //Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            //Log.w(TAG, "Error adding document", e);
                        }
                    });

        }
    });
}

这是我不断得到的错误。我已通过助手将该项目添加到我的Android应用程序中。所以不应该有问题。

Process: damn.testapp, PID: 2622
java.lang.IllegalArgumentException: FirebaseOptions.getProjectId() can be null at com.google.firebase.firestore.firestore.zze(Unknown Source) at com.google.firebase.firestore.firestore.getInstance(Unknown Source) at damn.testapp.MainActivity$1.onClick(MainActivity.java:44) at android.view.view.performClick(View.java:5637) at android.view.View$PerformClick.run(View.java:22429) atandroid.os.handler.handleCallback(Handler.java:751) at android.os.handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

任何帮助将不胜感激。

这是我的数据库安全规则

service cloud.firestore {
  match /databases/{database}/documents {
match /{document=**} {
  allow read, write;
    }
  }
}

这就是我使用的依赖关系:

    compile 'com.google.firebase:firebase-firestore:11.4.2'

答案 1

我遇到了同样的问题。在 gradle 中解决了这个问题:3.0.0 到 3.1.0

buildscript {
    dependencies {
        classpath 'com.google.gms:google-services:3.1.0'
    }
}

答案 2

如果您有一个 google-services.json 文件,但该部分中没有密钥,则可能会发生此故障。project_idproject_info

如果您要将 Firestore 添加到具有较旧的 google-services.json 文件的现有应用中,则可能会发生这种情况。项目 ID 是此文件中一个相对较新的字段,添加以支持 Firestore。

登录Firebase控制台,在那里找到您的应用程序,重新下载google-services.json文件,在您的项目中替换它,您应该很高兴。


推荐