Ответ 1
Сделайте двойную проверку, вы добавили
apply plugin: 'com.google.gms.google-services'
внизу файла app gradle, а затем очистите и перестройте проект
После перехода на 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());
}
}
Сделайте двойную проверку, вы добавили
apply plugin: 'com.google.gms.google-services'
внизу файла app gradle, а затем очистите и перестройте проект
Не уверен, если это актуально. Но есть и другой сценарий, когда это может произойти.
Если ваше приложение имеет сервис (с другим процессом), и вы создаете свой собственный класс Application
, приложение службы и переднего плана будет использовать тот же класс приложения (не тот же экземпляр), для инициализации. Теперь, когда я использую зависимость com.google.firebase:firebase-crash
для обработки сбоев, создается фоновая служба your.app.packagename:background_crash
. По какой-то причине это вызывало сбои в моем приложении. В частности, потому что в моем классе приложения я делал вызов как
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
Я предполагаю, что фоновая служба при инициализации с нашим классом Application, как-то Firebase не инициализируется. Чтобы исправить это, я сделал
if (!FirebaseApp.getApps(this).isEmpty())
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
У меня была схожая проблема, и для меня это была ошибка/проблема с явным слиянием. Я узнал, что FirebaseInitProvider
не был добавлен в файл окончательного манифеста из-за tools:node="replace"
в файле манифеста приложения. Итак, попробуйте удалить этот тег xml и FirebaseInitProvider
будет введен, и Firebase может быть правильно инициализирован.
файл 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'
@jmodrako ответ решил мою проблему... tools:node="replace"
до tools:node="merge"
Объяснено... на AndroidManifest.xml
С
<application
...
tools:node="replace">
Для
<application
...
tools:node="merge">
Объединить проблемы с темами библиотеки?
Задавайте проблемы с помощью tools:replace="android:theme"
Кредиты fooobar.com/questions/97975/...
Переместите инициализацию firebase внутри класса onCreate of Application. Кроме того, если вы включили автономное сохранение, FirebaseDatabase.getInstance(). SetPersistenceEnabled (true) должен появиться перед любыми другими инициализациями.
Android Studio
Работает для меня нормально.
В вашей зависимости просто добавьте:
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'
Зарегистрируйте свое приложение в Firebase и скопируйте google-services.json в свой корневой проект.
Примените classpath 'com.google.gms:google-services:3.1.0
к своему корневому build.gradle.
Примените apply plugin: 'com.google.gms.google-services
для вашего проекта.
Измените действие по созданию (GoogleServicesJson) на имя файла Google-Services.Json.
В моем случае я не инициализировал 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);
}
}
Проверьте все конфигурации, как показано ниже:
Настройка проекта 1-firebase: google-services.json правильно?
3- очистить - перестроить свой проект
надеюсь, это поможет!