java - español - Firestore getProductID no puede ser un error nulo
firestore query (6)
Este error puede ocurrir si tiene un archivo google-services.json pero no tiene una clave project_id
en la sección project_info
.
Esto podría suceder si está agregando Firestore a una aplicación existente con un archivo anterior de google-services.json. La ID del proyecto es un campo relativamente nuevo en este archivo, agregado para ser compatible con Firestore.
Inicie sesión en la consola de Firebase, encuentre su aplicación allí, vuelva a descargar el archivo google-services.json, reemplácelo en su proyecto y estará listo.
Estoy tratando de usar el nuevo Firestore lanzado por Firebase en mi aplicación para Android. Desafortunadamente, sigo recibiendo este error cuando intento escribir en la base de datos.
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);
}
});
}
});
}
Este es el error que sigo recibiendo. He añadido el proyecto a mi aplicación de Android a través del asistente. Así que no debería haber un problema.
Proceso: damn.testapp, PID: 2622
java.lang.IllegalArgumentException: FirebaseOptions.getProjectId () no puede ser nulo en com.google.firebase.firestore.FirebaseFirestore.zze (Fuente desconocida) en com.google.firebase.firestase.FirebaseFirestore.getInstance en esta propiedad. .MainActivity $ 1.onClick (MainActivity.java:44) en android.view.View.performClick (View.java:5637) en android.view.View $ PerformClick.run (View.java:22429) en android.os.Handler .handleCallback (Handler.java:751) en android.os.Handler.dispatchMessage (Handler.java:95) en android.os.Looper.loop (Looper.java:154) en android.app.ActivityThread.main (ActivityThread. java: 6119) en java.lang.reflect.Method.invoke (Método nativo) en com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:886) en com.android.internal.os.ZygoteInit. main (ZygoteInit.java:776)
Cualquier ayuda sería muy apreciada.
Aquí están mis reglas de seguridad para la base de datos.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
Y esta es la dependencia que estoy usando:
compile ''com.google.firebase:firebase-firestore:11.4.2''
Este es un problema con el envío de la clave que contiene el valor "nulo". Intente reemplazar el valor clave con una cadena vacía "".
Esto está causando el problema.
FirebaseFirestore db = FirebaseFirestore.getInstance();
En su lugar, úsalo así:
private DocumentReference documentReference = FirebaseFirestore.getInstance().document("sampleData/myData");
Y guardar los datos como este;
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());
}
});
La respuesta sokarcreativa no me funcionó. Hice esto:
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''s Maven repository
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Yo tuve el mismo problema. Resuelto con esto en gradle: 3.0.0 a 3.1.0
buildscript {
dependencies {
classpath ''com.google.gms:google-services:3.1.0''
}
}
yo tengo
buildscript {
dependencies {
classpath ''com.google.gms:google-services:4.2.0''
}
}
y la solución está en el constructor de FirebaseOptions .setProjectId (prjID)
String projectID = "project-id-com";
FirebaseOptions options = new FirebaseOptions.Builder()
.setApplicationId("1:26000034:android:6d45000000534")
.setApiKey("AIzaSyAbsrv0000000000eml95vFOs")
.setDatabaseUrl("https://" + projectID + ".firebaseio.com")
.setProjectId(projectID)
.build();
FirebaseApp.initializeApp(context, options, projectID);
FirebaseApp app = FirebaseApp.getInstance(projectID);
FirebaseFirestore db = FirebaseFirestore.getInstance(app);
Map<String, Object> city = new HashMap<>();
city.put("name", "Los Angeles");
city.put("state", "CA");
city.put("country", "USA");
db.collection("documents")
.document("example")
.set(city)
.addOnSuccessListener(documentReference ->
Log.d(TAG, "DocumentSnapshot added with ID: " ))
.addOnCompleteListener(ab ->
Log.d(TAG, "complete: "))
.addOnFailureListener(e ->
Log.d(TAG, "Error adding document", e));