Firestore getProductID не может быть нулевой ошибкой

Я пытаюсь использовать новый Firestore, выпущенный Firebase в моем приложении для Android. К сожалению, я продолжаю получать эту ошибку при попытке записи в базу данных.

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 через помощника. Поэтому проблема не должна быть.

Процесс: damn.testapp, PID: 2622
java.lang.IllegalArgumentException: FirebaseOptions.getProjectId() не может быть com.google.firebase.firestore.FirebaseFirestore.zze(Неизвестный источник) в com.google.firebase.firestore.FirebaseFirestore.getInstance(Неизвестно Источник) на 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) в android.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) в java.lang.reflect.Method.invoke(собственный метод) в 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_id в разделе project_info.

Это может произойти, если вы добавляете Firestore в существующее приложение со старым файлом google-services.json. Идентификатор проекта - это относительно новое поле в этом файле, добавленное для поддержки Firestore.

Войдите в консоль Firebase, найдите там свое приложение, повторно загрузите файл google-services.json, замените его в своем проекте, и вам должно быть хорошо идти.

Ответ 3

Это вызывает проблему.

FirebaseFirestore db = FirebaseFirestore.getInstance();

Вместо этого используйте его следующим образом:

private DocumentReference documentReference = FirebaseFirestore.getInstance().document("sampleData/myData");

И сохраните данные следующим образом:

    Map<String, Object> user = new HashMap<>();
    user.put("first", "Ada");
    user.put("last", "Lovelace");
    user.put("born", 1815);
    documentReference
            .set(user).addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            Log.d("MainActivity", "DocumentSnapshot added with ID: " + documentReference.getId());
        }
    });

Ответ 4

sokarrereative ответ не сработал у меня. Я сделал это:

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.google.gms:google-services:3.1.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "https://maven.google.com" // Google Maven repository
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Ответ 5

Это проблема с отправкой ключа, содержащего значение "null". Попробуйте заменить значение ключа пустой строкой "".