迁移到Firebase Cloud Messaging后。当打开我的应用时,它会崩溃并抛出错误java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.
我已经放了我的新google-services.json并更新了我的SDK。
这是我的MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Check Google play service
GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
int resultCode = googleAPI.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
GooglePlayServicesUtil.getErrorDialog(resultCode, this,
PLAY_SERVICES_RESOLUTION_REQUEST).show();
} else {
Log.e(LOG_TAG, "This device is not supported.");
finish();
}
}
Log.i(TAG, "InstanceID token: " + FirebaseInstanceId.getInstance().getToken());
}
}
答案 0 :(得分:66)
请仔细检查,您已添加
apply plugin: 'com.google.gms.google-services'
在应用程序的gradle文件的底部,然后清理并重建项目
答案 1 :(得分:21)
不确定,如果它在这里是相关的。但是还有另一种情况可能发生这种崩溃。
如果您的应用有服务(使用不同的流程)并且您正在创建自己的Application
类,则该服务和前台应用将使用相同的应用类(不是同一个实例< / strong>)初始化。现在,当我使用com.google.firebase:firebase-crash
依赖来处理崩溃时,它会创建后台服务your.app.packagename:background_crash
。由于某种原因,这导致我的应用程序崩溃。具体来说,因为在我的Application类中,我正在进行调用,如
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
我假设,使用我们的Application类启动时的后台服务,不知何故Firebase未初始化。为了解决这个问题,我做了
if (!FirebaseApp.getApps(this).isEmpty())
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
答案 2 :(得分:12)
我有类似的问题,对我来说这是一个明显合并的错误/问题。我发现由于我的应用程序清单文件中的FirebaseInitProvider
,tools:node="replace"
尚未注入最终清单文件。因此,请尝试删除此xml标记,并注入FirebaseInitProvider
并正确初始化Firebase。
答案 3 :(得分:10)
build.gradle文件:
buildscript {
repositories {
jcenter()
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
jcenter()
mavenLocal()
}
}
\ app \ build.gradle文件:
apply plugin: 'com.android.application'
android {
..
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
..
compile 'com.google.firebase:firebase-core:9.0.2'
compile 'com.google.firebase:firebase-messaging:9.0.2'
}
apply plugin: 'com.google.gms.google-services'
答案 4 :(得分:10)
@jmodrako答案解决了我的问题... tools:node="replace"
到tools:node="merge"
在AndroidManifest.xml上解释...
发件人强>
<application
...
tools:node="replace">
要强>
<application
...
tools:node="merge">
合并图书馆主题的问题?
使用tools:replace="android:theme"
答案 5 :(得分:2)
将firebase初始化移动到onCreate of Application类中。 此外,如果您启用了离线持久性,FirebaseDatabase.getInstance()。setPersistenceEnabled(true)应该在任何其他初始化之前。
答案 6 :(得分:2)
将以下行添加到app / build.gradle
apply plugin: 'com.google.gms.google-services' // Google Services plugin
以及以下行到project build.gradle
classpath 'com.google.gms:google-services:4.3.3'
答案 7 :(得分:0)
Android Studio
对我有用。
答案 8 :(得分:0)
在您的依赖项中,只需添加:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
...
compile 'com.google.firebase:firebase-core:9.0.2'
compile 'com.google.firebase:firebase-messaging:9.0.2'
}
申请plugin: 'com.google.gms.google-services'
答案 9 :(得分:0)
在Firebase中注册您的应用程序,并将google-services.json复制到您的根项目。
将classpath 'com.google.gms:google-services:3.1.0
应用于root build.gradle。
将apply plugin: 'com.google.gms.google-services
应用于您的项目计划。
答案 10 :(得分:0)
将构建操作(GoogleServicesJson)更改为文件名Google-Services.Json。
答案 11 :(得分:0)
对于我来说,我不是在应用启动时初始化Firebase的,所以我必须执行以下操作来解决它
@Service
public class FirebaseSetup implements CommandLineRunner {
public void run(String... args) throws Exception {
initializeFirebase();
}
private void initializeFirebase() throws FileNotFoundException, IOException {
FileInputStream serviceAccount = new FileInputStream(ResourceUtils.getFile("classpath:ssf1-v1-firebase-adminsdk-zr72u-afcb5bc13b.json"));
FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount)).build();
FirebaseApp.initializeApp(options);
}
}
答案 12 :(得分:0)
答案 13 :(得分:0)
将 classpath 'com.google.gms:google-services:3.0.0'
添加到 build.gradle
dependencies {
..
classpath 'com.google.gms:google-services:3.0.0'
}
在 app\build.gradle 末尾添加这个
apply plugin: 'com.google.gms.google-services'
这对我有用