Java 如何解决Android Firebase错误;默认FirebaseApp未在此过程中初始化";?
我正在使用FirebaseAuth进行用户注册,并带有电子邮件和密码,我已经在我的项目中添加了插件和依赖项 MainActivity.javaJava 如何解决Android Firebase错误;默认FirebaseApp未在此过程中初始化";?,java,android,firebase,firebase-realtime-database,firebase-authentication,Java,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我正在使用FirebaseAuth进行用户注册,并带有电子邮件和密码,我已经在我的项目中添加了插件和依赖项 MainActivity.java public class MainActivity extends AppCompatActivity implements View.OnClickListener { EditText ed_email, ed_pass; Button but_login; ProgressDialog progressDialog; FirebaseAuth fi
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText ed_email, ed_pass;
Button but_login;
ProgressDialog progressDialog;
FirebaseAuth firebaseAuth;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=getApplicationContext();
FirebaseApp.initializeApp(context);
firebaseAuth=FirebaseAuth.getInstance();
ed_email= (EditText) findViewById(R.id.ed_email);
ed_pass= (EditText) findViewById(R.id.ed_pass);
but_login= (Button) findViewById(R.id.but_login);
but_login.setOnClickListener(this);
progressDialog=new ProgressDialog(this);
}
public void registerUser(){
String email=ed_email.getText().toString().trim();
String pass=ed_pass.getText().toString().trim();
if(TextUtils.isEmpty(email)){
Toast.makeText(getApplicationContext(),"Invalid Input",Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(pass)){
Toast.makeText(getApplicationContext(),"Invalid Input",Toast.LENGTH_SHORT).show();
return;
}
progressDialog.setMessage("You are registering...");
progressDialog.show();
firebaseAuth.createUserWithEmailAndPassword(email,pass).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
progressDialog.hide();
} else {
Toast.makeText(getApplicationContext(), "Sorry...!!!", Toast.LENGTH_SHORT).show();
progressDialog.hide();
}
}
});
}
@Override
public void onClick(View v) {
registerUser();
}
我的应用程序未启动,并显示以下错误:
java.lang.IllegalStateException: Default FirebaseApp is not initialized in this
process com.skapsdevelopment.firebase.
Make sure to call FirebaseApp.initializeApp(Context) first.
为什么应用程序启动不正常?中说明应从应用程序调用FirebaseApp.initializeApp()
您是否尝试创建和安装应用程序实例(如果您还没有),并从其onCreate()方法调用
FirebaseApp.initializeApp(this)
?您需要在程序中添加initializeApp。我可以教你怎么做
首先创建一个新类并扩展应用程序
public class SimpleBlog extends Application {
@Override
public void onCreate() {
super.onCreate();
if(!FirebaseApp.getApps(this).isEmpty()) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
}
最后,转到清单并按如下方式添加应用程序:
<application
android:name=".SimpleBlog" <------
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
再次检查以下内容,因为这对我很有效:
在项目级渐变文件中添加:
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.0.0'
}
}
并在您的应用程序构建渐变文件中:
apply plugin: 'com.android.application'
android {
// ...
}
dependencies {
// ...
compile 'com.google.firebase:firebase-core:10.0.1'
// Getting a "Could not find" error? Make sure you have
// the latest Google Repository in the Android SDK manager
}
// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
在我的案例中,Proguard造成了问题,所以我就是这么做的:
-如果AndroidManifest.xml中有任何类带有“YourClass”
或“.YourClass”
,请将其更改为其完整的包名:“com.yourpackage.YourClass”
,感谢这里的答案,我在遇到此错误时查看了可能出现的问题的检查列表
最后我意识到。。我在AndroidStudio中启动了一个新模块,它的包名与我设置的Firebase实例在Firebase控制台上注册的包名不同。简单的错误-我忘了在控制台配置中添加新的包名
我搞定了之后,它开始工作了。记住Firebase Console所期望的所有小细节有时会很棘手。。一定要保持警惕,我也面临着上述问题。我下载了所有插件,并用NuGet检查更新。最后,我发现崩溃是由于应用程序包名称与Googledev中指定的名称不匹配
- 确保为您的google-services.json分配了构建操作
谷歌服务公司
- 检查您的应用程序包名称是否与您选择的应用程序包名称匹配
在Google开发控制台中分配
首先要确保在Firebase控制台中注册应用程序,并在应用程序中添加google services.json文件
然后检查是否添加了所有的依赖项。
在应用程序bulid Gradle文件中添加以下依赖项:-
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.google.gms:google-services:4.0.0'
}
dependencies
{
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-auth:16.0.2'
}
apply plugin: 'com.google.gms.google-services'
并添加到项目级bulid gradle文件中:-
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.google.gms:google-services:4.0.0'
}
dependencies
{
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-auth:16.0.2'
}
apply plugin: 'com.google.gms.google-services'
遵循以下步骤:
删除FirebaseApp.initializeApp(上下文)代码>因为在较新版本的Firebase中不需要它
将包名为的应用程序添加到Firebase项目中。使用您的软件包名称下载Google JSON文件,并将下载的文件添加到您的应用程序中
将说明的库添加到应用程序级和项目级渐变中
同步项目,即可使用Firebase
有关更多信息,请参见。请添加此类路径'com.google.gms:google services:4.0.1'
在classpath'com.google.gms:google services:4.1.0'的位置在项目的build.gradle中将谷歌服务插件从4.1.0版降级到4.0.1版
classpath 'com.google.gms:google-services:4.0.1'
派对有点晚了,但我想分享我的解决方案。希望它能帮助别人
几个小时前,我也遇到了类似的问题。这里什么都试过了,但都没用。我所有的依赖项都是正确的,这毫无意义
我不知道的是这个应用程序需要在Firebase中注册。我一步一步地跟着这个,瞧!它起作用了!不要使用推荐的类路径依赖项,请确保使用此依赖项com.google.gms:googleservices:4.2.0
对我有效的是:
添加FirebaseApp.initializeApp(此)活动onCreate()
方法上的code>
降级com.google.gms:google srvices
项目级build.gradle
从4.2.0到4.0.0
这正在改变:
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath 'com.google.gms:google-services:4.2.0'
}
致:
在应用程序的项目级build.gradle
内部依赖项中添加以下行
classpath'com.google.gms:googleservices:4.3.5'
然后添加以下行作为应用程序模块级别的最后一行build.gradle
应用插件:“com.google.gms.google服务”
现在,同步两个gradle
文件,就可以开始了
我希望这能解决你的问题
快乐编码:)我尝试了上面所有可用的方法,但都没有完全解决这个问题。我
他这样做:
在您的pubspec.yaml
中添加firebase\u core:
。从中添加最新版本
二,。现在,打开main.dart,然后按如下方式修改代码:
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
您只需在应用程序中调用一次Firebase.initializeApp()
。是的。。。我也在这样做。但仍然得到同样的错误。这是我的onCreate()方法:`protectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);FirebaseApp.initializeApp(this);firebaseAuth=firebaseAuth.getInstance();ed_email=(EditText)findViewById(R.id.ed_email);ed_pass=(EditText)findViewById(R.id.ed_pass);but_login=(Button)findViewById(R.id.but_login);but_login.setOnClickListener(this);progressDialog=newprogressDialog(this);}`我正在使用FirebaseAuth注册电子邮件和密码。是否需要像在onCreate()中写的那样添加FirebaseDatabase上述方法?否,FirebaseApp仅适用于注册应用程序