Po migracji do Firebase Cloud Messaging.Podczas otwierania mojej aplikacji ulega awarii i wyświetla błąd informujący, java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.
że umieściłem już mój nowy plik google-services.json i zaktualizowałem SDK.
Oto moja 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'
z mojego app Gradle jednak napotkać nowy błąd podczas wywoływaniaFirebaseInstanceId.getInstance().getToken()
w moimMainActivity
moich awarii aplikacji.apply plugin: 'com.google.gms.google-services'
? próbując go dodać, nadal napotykam błąd. mówiDidn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
flutter clean & flutter run
jak sugerowano w odpowiedzi.Nie jestem pewien, czy ma to znaczenie tutaj. Ale jest inny scenariusz, w którym może się zdarzyć ta awaria.
Jeśli Twoja aplikacja ma usługę (z innym procesem) i tworzysz własną
Application
klasę, usługa i aplikacja pierwszego planu będą używać tej samej klasy Application ( nie tego samego wystąpienia ) do zainicjowania. Teraz, gdy używamcom.google.firebase:firebase-crash
zależności do obsługi awarii, tworzy usługę w tleyour.app.packagename:background_crash
. Z jakiegoś powodu powodowało to awarie mojej aplikacji. W szczególności, ponieważ w mojej klasie Application wykonywałem połączenie typu:FirebaseDatabase.getInstance().setPersistenceEnabled(true);
Zakładam, że usługa w tle podczas inicjowania z naszą klasą Application, w jakiś sposób Firebase nie jest inicjowana. Aby to naprawić, zrobiłem
if (!FirebaseApp.getApps(this).isEmpty()) FirebaseDatabase.getInstance().setPersistenceEnabled(true);
źródło
Miałem podobny problem i dla mnie był to błąd / problem z manifestacją fuzji. Dowiedziałem się, że
FirebaseInitProvider
nie został wprowadzony do ostatecznego pliku manifestu z powodu pliku manifestutools:node="replace"
mojej aplikacji. Spróbuj więc usunąć ten tag xml, aFirebaseInitProvider
zostanie on wstawiony, a Firebase będzie można poprawnie zainicjować.źródło
plik 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() } }
Plik \ 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'
źródło
@jmodrako odpowiedź rozwiązała mój problem ...
tools:node="replace"
dotools:node="merge"
Wyjaśniono ... na AndroidManifest.xml
Od
<application ... tools:node="replace">
Do
<application ... tools:node="merge">
Połączyć problemy z motywami biblioteki? Twórz problemy rozwiązane za pomocą
tools:replace="android:theme"
Kredyty na https://stackoverflow.com/a/38060272/2765087
źródło
Przenieś inicjalizację firebase do klasy onCreate of Application. Jeśli włączyłeś utrwalanie w trybie offline, FirebaseDatabase.getInstance (). SetPersistenceEnabled (true) powinno nastąpić przed innymi inicjalizacjami.
źródło
Sprawdź wszystkie konfiguracje, jak poniżej:
Ustawienie projektu 1-firebase: google-services.json jest poprawne?
2- Dodaj pakiet SDK Firebase
3- Clean - przebuduj swój projekt
miejmy nadzieję, że to pomoże!
źródło
Dodaj następujący wiersz do pliku app / build.gradle
apply plugin: 'com.google.gms.google-services' // Google Services plugin
I następujący wiersz do projektu build.gradle
classpath 'com.google.gms:google-services:4.3.3'
źródło
Android Studio
U mnie działa dobrze.
źródło
Zarejestruj swoją aplikację w Firebase i skopiuj google-services.json do swojego projektu głównego.
Zastosuj
classpath 'com.google.gms:google-services:3.1.0
do użytkownika root build.gradle.Zastosuj
apply plugin: 'com.google.gms.google-services
do oceny swojego projektu.źródło
W swojej zależności po prostu dodaj:
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' }
zastosować
plugin: 'com.google.gms.google-services'
źródło
Zmień akcję kompilacji (GoogleServicesJson) na nazwę pliku Google-Services.Json.
źródło
W moim przypadku nie inicjowałem Firebase podczas uruchamiania aplikacji, musiałem wykonać następujące czynności, aby rozwiązać problem
@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); } }
źródło