Firestore getProductID 不能为空错误
Firestore getProductID cannot be null error
我正在尝试在我的 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()
cannot be null at
com.google.firebase.firestore.FirebaseFirestore.zze(Unknown Source) at
com.google.firebase.firestore.FirebaseFirestore.getInstance(Unknown
Source) at damn.testapp.MainActivity.onClick(MainActivity.java:44)
at android.view.View.performClick(View.java:5637) at
android.view.View$PerformClick.run(View.java:22429) at
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) 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'
这是导致问题的原因。
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());
}
});
如果您有一个 google-services.json 文件,但它在 project_info
部分中没有 project_id
键,则会发生此故障。
如果您将 Firestore 添加到具有旧 google-services.json 文件的现有应用程序,则可能会发生这种情况。项目 ID 是此文件中一个相对较新的字段,添加是为了支持 Firestore。
登录 Firebase 控制台,在其中找到您的应用程序,重新下载 google-services.json 文件,将其替换到您的项目中,然后您就可以开始了。
我遇到了同样的问题。
在 gradle 中解决了这个问题:
3.0.0 到 3.1.0
buildscript {
dependencies {
classpath 'com.google.gms:google-services:3.1.0'
}
}
sokarcreative 答案对我不起作用。我这样做了:
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
}
这是发送包含 "null" 值的密钥的问题。尝试用空字符串“”替换键值。
我有
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
}
}
解决方案在 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));
我正在尝试在我的 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() cannot be null at com.google.firebase.firestore.FirebaseFirestore.zze(Unknown Source) at com.google.firebase.firestore.FirebaseFirestore.getInstance(Unknown Source) at damn.testapp.MainActivity.onClick(MainActivity.java:44) at android.view.View.performClick(View.java:5637) at android.view.View$PerformClick.run(View.java:22429) at 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) 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'
这是导致问题的原因。
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());
}
});
如果您有一个 google-services.json 文件,但它在 project_info
部分中没有 project_id
键,则会发生此故障。
如果您将 Firestore 添加到具有旧 google-services.json 文件的现有应用程序,则可能会发生这种情况。项目 ID 是此文件中一个相对较新的字段,添加是为了支持 Firestore。
登录 Firebase 控制台,在其中找到您的应用程序,重新下载 google-services.json 文件,将其替换到您的项目中,然后您就可以开始了。
我遇到了同样的问题。 在 gradle 中解决了这个问题: 3.0.0 到 3.1.0
buildscript {
dependencies {
classpath 'com.google.gms:google-services:3.1.0'
}
}
sokarcreative 答案对我不起作用。我这样做了:
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
}
这是发送包含 "null" 值的密钥的问题。尝试用空字符串“”替换键值。
我有
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
}
}
解决方案在 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));