我使用FirebaseAuth进行用户注册电子邮件和密码,我已经在我的项目中添加了插件和依赖项。
main activity.Java
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();
}
}
logcat -
com.skapsdevelopment.firebase E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.skapsdevelopment.firebase, PID: 31993
Theme: themes:{default=overlay:com.resurrectionremix.pitchblack, iconPack:com.baranovgroup.nstyle, fontPkg:com.resurrectionremix.pitchblack, com.android.systemui=overlay:com.resurrectionremix.pitchblack, com.android.systemui.navbar=overlay:com.resurrectionremix.pitchblack}
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.skapsdevelopment.firebase/com.skapsdevelopment.firebase.MainActivity}: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.skapsdevelopment.firebase. Make sure to call FirebaseApp.initializeApp(Context) first.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.skapsdevelopment.firebase. Make sure to call FirebaseApp.initializeApp(Context) first.
at com.google.firebase.FirebaseApp.getInstance(Unknown Source)
at com.google.firebase.auth.FirebaseAuth.getInstance(Unknown Source)
at com.skapsdevelopment.firebase.MainActivity.onCreate(MainActivity.java:35)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我的应用程序未启动并显示以下错误:
java.lang.IllegalStateException: Default FirebaseApp is not initialized in this
process com.skapsdevelopment.firebase.
Make sure to call FirebaseApp.initializeApp(Context) first.
为什么应用程序无法正常启动?
仔细检查以下内容,因为这对我有用:
在项目级gradle文件中添加:
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.0.0'
}
}
在您的app-build gradle文件中:
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'
在项目的build.gradle中将谷歌服务插件从版本4.1.0降级到版本4.0.1
classpath 'com.google.gms:google-services:4.0.1'
派对迟到了,但我想分享我的解决方案。希望它能帮助别人
几个小时前我遇到了一个非常类似的问题。在这里尝试了一切,但没有任何效果。我所有的依赖都是正确的,没有任何意义。
我不知道的是,此应用程序需要在Firebase中注册。我跟着这一步一步guide和voilà!有用!不要使用推荐的类路径依赖项,请务必使用这个com.google.gms:google-services:4.2.0
。
在Docs中声明应该从Application调用FirebaseApp.initializeApp()。
您是否尝试创建和应用程序实例(如果您还没有),并从其onCreate()方法调用FirebaseApp.initializeApp(this)
?
请在classpath“com.google.gms:google-services:4.1.0”的位置添加此类路径“com.google.gms:google-services:4.0.1”
首先确保您在Firebase控制台中注册了应用程序,并在应用程序中添加了google-services.json文件。
秒检查是否已添加所有依赖项。在App-bulid Gradle文件中添加以下依赖项: -
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.google.gms:google-services:4.0.0'
}
并添加项目级构建gradle文件: -
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'
我也遇到了上述问题。我下载了所有插件并使用NuGet检查了更新。最后,我发现崩溃是由于应用程序包名称与Google Dev中指定的名称不匹配。
您需要在程序中添加initializeApp。我可以告诉你它是如何完成的。
首先创建一个新类并扩展Application
。
public class SimpleBlog extends Application {
@Override
public void onCreate() {
super.onCreate();
if(!FirebaseApp.getApps(this).isEmpty()) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
}
最后,转到Manifest并在应用程序中添加如下:
<application
android:name=".SimpleBlog" <------
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
这都是......
在我的案例中,Proguard引起了问题,所以这就是我所做的: - 如果AndroidManifest.xml中有任何类与"YourClass"
或".YourClass"
,请将其更改为其完整包名:"com.yourpackage.yourClass"
感谢这里的答案,当我遇到此错误时,我查看了可能出现问题的清单。
最后,我意识到..我在Android Studio中启动了一个新模块,其名称与Firebase控制台上已经为我设置的Firebase实例注册的名称不同。简单的错误 - 我忘了将新的包名添加到Console配置中。
在我做对了之后,它开始起作用了。记住Firebase控制台预期的所有小细节有时候会很棘手..必须警惕/“配置认知”那里肯定
跟着这些步骤:
FirebaseApp.initializeApp(context);
,因为在较新版本的Firebase中不需要它有关详细信息,请参阅Firebase Authentication Guide。