Firebase/Crashlytics - połączenie kont

0

Witam,

Jakiś czas temu dodałem do projektu obsługę Crashlytics, według tego oficjalnego opisu: https://firebase.google.com/docs/crashlytics/get-started

Wszystko ładnie działa. Nie potrzebuję w ogóle rejestrować konta Fabric, łączyć go z Firebase, ani instalować pluginu Fabric do Android Studio. Jakie więc było moje zdziwienie, gdy chcąc, żeby drugi flavor aplikacji, dodany do Firebase jako nowy projekt też używał Crashlytics - nie mogę już dodać Crashlytics w ten sposób, który opisano w powyższym artykule. Pomimo wykonania wszystkiego tak samo jak poprzednio, konsola Firebase wymusza na mnie założenie konta Fabric i dodanie mojej aplikacji do panelu Fabric. Dopiero potem mogę połączyć aplikację Fabric z aplikacją w Firebase i wtedy dopiero konsola Firebase pokazuje mi konsolę Crashlytics i crashe zaczynsją pojawiać się w Firebase - w innym przypadku przekierowuje mnie do logowania do Fabric. Przedtem nie było to wymagane.

Jeśli zrobię to, co każą w dokumentacji:

Note: If you're upgrading from Fabric Crashlytics, remove the Fabric API key from your AndroidManifest.xml. Delete the key's meta-data tag, which should have io.fabric.ApiKey and the API key.

to crashe w ogóle nie są nigdzie wysyłane. Aplikację muszę dodawać do Fabric za pomocą pluginu Fabric do Android Studio. Problem jest w tym, że plugin ignoruje build flavors mojej aplikacji - jeśli dodam do Fabric jeden wariant, to nie pozwala mi dodać kolejnego (ma on inny id, więc po zbudowaniu jest to oddzielna aplikacja), twierdząc że w moim projekcie Fabric już jest skonfigurowany.

Z poziomu webowego panelu Fabric nowej aplikacji Android dodać się nie da. Obszedłem to w ten sposób, że stworzyłem czysty projekt Androida o id takim samym, jak mój docelowy wariant we właściwym projekcje. Potem po przebudowaniu nowego wariantu aplikacji crashe idą do Fabric (i do Firebase, jeśli aplikacja Fabric jest połączona z projektem w Firebase).

Mógłbym nawet to zaakceptować (to, że od teraz aplikację muszę mieć dodaną także do panelu Fabric). Problem jest jednak z tym pierwszym wariantem, który kiedyś konfigurowałem "po staremu". Jeśli manifest zawiera klucze api wskazujące na konto Fabric (a manifest jest wspólny dla wszystkich wariantów aplikacji), to Fabric wysyła crashe do aplikacji dodanej do konsoli Fabric, a w konsoli Firebase nie pojawia się już nic. Aplikacji Fabric odpowiadającej pierwszemu wariantowi nie mogę już połączyć z projektem Firebase, bo pokazuje mi że ten projekt Firebase jest już połączony z innym kontem Fabric (którego nigdy nie miałem, tak jak napisałem na początku).

Ma ktoś pomysł, jak teraz ogarnąć ten bałagan?

1

Nie do końca rozumiem, co chcesz zrobić, bo trochę to zagmatwane, co opisałeś. Który scenaruisz jest prawidłowy?

  1. Twoja aplikacja korzystała do tej pory z Fabric i chcesz teraz zamienić na Firebase.
  2. Twoja aplikacja korzystała do tej pory z Fabric i chcesz podłączyć Firebase dodatkowo.
  3. Twoja aplikacja nie korzystała wcześniej z Fabric i chcesz dodać Firebase.

Pobawiłem się teraz z 20 minut z różnymi scenariuszami i nie miałem z niczym problemu. Wszystko dało się ustawić osobno, łączyć ze sobą itd. Błędy było widać tu i tu albo osobno - zależy od tego, co było w projekcie skonfigurowane. Pytanie, co chcesz osiągnąć? Chcesz, żeby każdy flavor miał swój własny panel w konsoli z błedami tylko dla tego flavoru? Jeżeli tak, to najlepiej jakby Twoje flavory zmieniały w jakiś sposób nazwę pakietu aplikacji.

0

Chcę korzystać z Crashlytics. Każdy flavor ma inny id (to co piszesz - inna nazwa pakietu aplikacji) i jest podłączony do Firebase jako osobny projekt. W każdym z tych projektów Firebase chcę oddzielnie korzystać z Crashlytics - bo Firebase Crash Reporting wkrótce zostanie zamknięte.

Powiedz mi co konfigurowałeś i jak? Dopóki nie połączysz swojego projektu Firebase z Fabric (poprzez konsolę Fabric), nie da się nawet dostać do konsoli Crashlytics w Firebase. Najpierw jednak aplikacja musi być dodana do konsoli Fabric. Z kolei, do Fabric da się dodać tylko projekt jako całość, flavors (nawet o różnych id) plugin Fabric do Android Studio nie rozróżnia - jeśli dodasz do Fabric jeden flavor, po przełączeniu na inny - plugin dalej twierdzi, że aplikacja już jest w Fabric, pomimo tego, że zmienił się jej id. Napisałem powyżej, jak to obszedłem - pusty projekt o takim samym id jak kolejny flavor mojej aplikacji.

A najgorszy problem, to główny flavor aplikacji - kiedyś był dodany do Crashlytics (ale nie do Fabric, bo wtedy o to konsola Firebase nie pytała), teraz konsola Fabric twierdzi, że ten projekt Firebase jest już połączony z Fabric, ale wygląda to tak, jakby to było nie na moim koncie - więc na jakim? Gdy w konsoli Firebase wybiorę projekt, który odpowiada głównemu flavor mojej aplikacji, w ustawieniach projektu, w sekcji "Połączone konta" nie widzę Fabric, tak jakby nie był połączony z Fabric, pomimo tego mogę otworzyć konsolę Crashlytics i dodają się do niej crashe, pod warunkiem że skonfiguruję projekt tak, jak napisano w linku, który wkleiłem w pierwszym poście. Dla nowych flavorów nie udało mi się osiągnąć tego samego - gdy próbuję otworzyć konsolę Crashlytics w Firebase, każe mi najpierw zalogować się do Fabric i połączyć mój projekt z Fabric.

P.S. tak naprawdę nie potrzeba mi żadnego mnożenia bytów - wystarczy mi konsola Crashlytics w Firebase. Tyle, że dla dwóch nowych flavorów (2 nowe projekty Firebase), nie mogę się dostać do Crashlytics w Firebase, dopóki nie zduplikuję projektu w konsoli Fabric i nie zaakceptuję zmian w konfiguracji, które wprowadza plugin Fabric do Android Studio (a konfiguruje on projekt inaczej, niż mówi dokumentacja)

1
kulson napisał(a):

Chcę korzystać z Crashlytics. Każdy flavor ma inny id (to co piszesz - inna nazwa pakietu aplikacji) i jest podłączony do Firebase jako osobny projekt.

Trochę niepotrzebne komplikowanie sobie życia moim zdaniem. Jeżeli flavory mają różne nazwy pakietu aplikacji to wygodniej byłoby je trzymać w jednym projekcie jako osobne aplikacje. W ten sposób nie trzeba się bawić ze strukturą folderów i google-services.json, tylko wszystko może być władowane w jeden plik pod /src.

kulson napisał(a):

Powiedz mi co konfigurowałeś i jak?

Nie odpowiedziałeś czy wcześniej korzystałeś z Fabrica. Zakładam więc, że to czysty projekt, w którym nie było niczego i podaję tylko co trzeba ustawić dla Firebase'a, a nie co usunąć dla Fabrica. Żadnego konta na Fabricu nie musiałem dodawać ani nic. Gdyby wcześniej projekt był skonfigurowany z Fabriciem, to też nie musiałbym niczego łączyć, ale mógłbym, gdyby była potrzeba.

build.gradle dla projektu.

buildscript {
  repositories {
    google()
    jcenter()
    maven {
      url 'https://maven.fabric.io/public'
    }
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.1.1'
    classpath 'com.google.gms:google-services:3.2.0'
    classpath 'io.fabric.tools:gradle:1.25.2'
  }
}

allprojects {
  repositories {
    google()
    jcenter()
  }
}

build.gradle dla modułu aplikacji.

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

android {
  compileSdkVersion 27
  defaultConfig {
    applicationId 'test.crash.boom'
    minSdkVersion 21
    targetSdkVersion 27
    versionCode 1
    versionName '1.0'
  }
  flavorDimensions 'myFlavor'
  productFlavors {
    first {
      dimension 'myFlavor'
      applicationIdSuffix 'first'
    }
    second {
      dimension 'myFlavor'
      applicationIdSuffix 'second'
    }
  }
}

dependencies {
  implementation 'com.google.firebase:firebase-core:15.0.0'
  implementation 'com.crashlytics.sdk.android:crashlytics:2.9.1'
}

apply plugin: 'com.google.gms.google-services'

Struktura plików. Każdy google-services.json musi być dla odpowiedniego projektu.

title

kulson napisał(a):

A najgorszy problem, to główny flavor aplikacji - kiedyś był dodany do Crashlytics (ale nie do Fabric, bo wtedy o to konsola Firebase nie pytała), teraz konsola Fabric twierdzi, że ten projekt Firebase jest już połączony z Fabric, ale wygląda to tak, jakby to było nie na moim koncie - więc na jakim?

Tutaj niespecjalnie mogę coś mądrego napisać. To już raczej problem z zarządzaniem kontami itp.

kulson napisał(a):

P.S. tak naprawdę nie potrzeba mi żadnego mnożenia bytów - wystarczy mi konsola Crashlytics w Firebase. Tyle, że dla dwóch nowych flavorów (2 nowe projekty Firebase), nie mogę się dostać do Crashlytics w Firebase, dopóki nie zduplikuję projektu w konsoli Fabric i nie zaakceptuję zmian w konfiguracji, które wprowadza plugin Fabric do Android Studio (a konfiguruje on projekt inaczej, niż mówi dokumentacja)

Z plugina do Fabrica to ostatni raz korzystałem chyba z 2 lata temu. Może z nim coś jest nie tak, ale wątpie. Z tego co pamiętam, to on tylko nachalnie edytował pliki Gradle'a i Manifest.

0

Przechodziłem i przez to. Jeśli tak zrobię, to w konsoli Firebase, dla projektu z odpowiadającego nowemu flavor nie mogę w ogóle otworzyć konsoli Crashlytics. Jest tylko komunikat z pytaniem czy chcę skonfigurować Crashlytics, wybieram że sdk Crashlytics już dodane (bo jest, tak jak to podałeś wyżej). I potem przekierowuje mnie na stronę logowania Fabric, każe zakładać tam konto i połączyć je z Firebase (przez plugin).

Jeśli zrobię tak jak ty, konsola Crashlytics w Firebase nigdy nie będzie dla mnie dostępna - zawsze mnie będzie kierował na stronę logowania Fabric, mogę sobie wysyłać crashe i trafiają w próżnię.

Fakt, że raz dla głównego flavor udało mi się tak jak tobie, ale więcej mi już na to nie pozwala.

P.S. plugin edytuje Gradle, dodaje klucze api Fabric do manifestu, dodaje inicjalizację Crashlytics w kodzie.

1

Ale w tym pytaniu nie chodzi o to czy Crashlytics jest dodane jako zależność, tylko czy Fabric go używa.

Należy wybrać tę pierwszą opcję z góry Tak, ta aplikacja nie korzystała jeszcze z Crashlytics (nie ma zainstalowanej żadnej wersji pakietu SDK), kliknąć otwórz dokumentację Crashlytics i wrócić do konsoli. Zacznie ona wtedy nasłuchiwać na aplikację, którą trzeba odpalić już skonfigurowaną. Jeżeli Crashlytics był używany przez Fabrica wcześniej, to trzeba go odpowiednio odkonfigurować.

Jeżeli wybierzesz, że już dodane, to wtedy musisz połączyć z Fabriciem.

0

Yhm, masz rację. Odłączyłem od Fabric w konsoli Firebase, zrobiłem reverta śmieci, które dodał plugin Fabric, odpaliłem nowy flavor i załapał. Tak jak to robiłem kiedyś na samym początku dla głównego flavor. Żadnego konta Fabric nie trzeba.

Jakaś pomroczność mnie dopadła, to samo już robiłem 2 miesiące temu. Mylące jest to, że nie pyta o to, czy używasz w projekcie Fabric Craslytics i nie informuje, że zaczyna nasłuchiwać po otworzeniu dokumentacji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1