9

w sesjach Google I/O 2016, pokazaliśmy duże ulepszenia w kierunku pełnej integracji Firebase. W moich aplikacjach próbuję przeprowadzić migrację do nowych rozwiązań, ale mam kilka pytań. Jednym z nich jest następująca:Jak uruchomić wersję aplikacji do debugowania na "debugującej" bazie danych Firebase

W moim Firebase apps użyłem parametr do zdefiniowania bazy Firebase następująco (Gradle): plik

gradle.properties:

FIREBASE_REF_REL="https://xxxxxxx.firebaseio.com/" 
FIREBASE_REF_DEB="https://xxxxxxx-dev.firebaseio.com/" 

build.gradle plik:

buildTypes { 
     debug { 
      minifyEnabled false 
      multiDexEnabled true 
      it.buildConfigField 'String', 'FIREBASE_ROOT_URL', FIREBASE_REF_DEB 
     } 
     release { 
      minifyEnabled true 
      useProguard true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      zipAlignEnabled true 
      it.buildConfigField 'String', 'FIREBASE_ROOT_URL', FIREBASE_REF_REL 
     } 
     return true 
    } 

To pozwoliło mi uruchomić moje debugowania aplikacji przed debugowania Firebase środowiska, który pomógł mi, aby przetestować zmiany w zasadach datamodel i bezpieczeństwa bez wpływu na str Środowisko tworzenia.

W nowym rozwiązaniu Firebase nie jest to już możliwe ze względu na wygenerowany plik google-services.json, który zawiera odniesienie do Firebase (jak wyjaśniono tutaj: https://firebase.google.com/support/guides/firebase-android#import_your_project_to_the_new_firebase_console_numbered).

Gdy próbuje odwołać moją bazę danych debugowania otrzymuję następujące rodzaje błędów:

Caused by: com.google.firebase.database.DatabaseException: Invalid URL (https://xxxxxxx-dev.firebaseio.com/) passed to getReference(). URL was expected to match configured Database URL: https://xxxxx.firebaseio.com 

Moje pytanie: co to jest poprawny sposób/najlepsze praktyki, aby uruchomić aplikację przeciwko testowej Firebase bazy w nowej sytuacji ?

Odpowiedz

13

Nie jestem pewien, czy to najlepsza praktyka.

Można użyć różnych plików google-services.json.
Prowadzę śledztwo dotyczące aktualnej wtyczki (com.google.gms:google-services:3.0.0), jeśli obsługuje ona typy kompilacji. Poprzedni (com.google.gms:google-services:2.1.X) obsługiwane smaki, ale nie typy.

W każdym przypadku powinny być w stanie używać somenthing tak:

app/src/release/google-services.json 
app/google-services.json 

W tym przypadku wtyczki wygląda w miejscach i zatrzymuje się, gdy znajdzie plik google-services.json.

W ten sposób powinieneś być w stanie używać różnych aplikacji firebase do debugowania i wydawania.

+3

Dzięki, to rozwiązało mój problem. Skończyło się na użyciu takiej struktury: 'project \ app \ src \ debug \ google-services.json project \ app \ src \ release \ google-services.json' Debugowanie teraz działa w dedykowanej bazie danych Firebase (z debugowanie SHA1), podczas gdy wersja wydania aplikacji działa w produkcyjnej bazie danych Firebase. – Peter

+3

@Peter, jeśli to rozwiązało problem, jak powiedziałeś, proszę oznaczyć go jako prawidłowy. Po prostu dodajesz ten link, by pomóc innym osobom takim jak ja -> [Porządkowanie kompilacji aplikacji na Androida w Firebase] (https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app- builds.html). –

+1

Oto kolejny dobry blogpost: https://medium.com/@Miqubel/multiple-build-types-in-firebase-on-android-6f6715f6dd83#.da7qmrzbx – lukle

-1

Nie ma potrzeby instalowania różnych plików google-services.json, jak wspomniano powyżej. Zamiast tego w Firebase utworzysz projekt. Każdy projekt może mieć wiele aplikacji (nawet na różnych platformach).

W moim przypadku na przykład mam dwa typy budowlanej (debug i release) oraz dwa productFlavors powstałe w 4 aplikacjach o różnych nazwach pakiet:

  • fullDebug: com.company.myapp.debug
  • fullRelease : com.company.myapp
  • demoDebug: com.company.myapp.demo.debug
  • demoRelease: com.company.myapp.demo

Jedna usługa google.Plik json obejmuje wszystkie te warianty i powinien po prostu zostać umieszczony w module aplikacji projektu Android Studio.

+0

Dzięki za komentarz. Próbuję osiągnąć to, że uruchomię wersję debugującą mojej aplikacji w "debugującej" bazie danych Firebase (która różni się od bazy danych "release"). Nie widzę, jak mogę to osiągnąć za pomocą jednego pliku google-services.json. Rozwiązanie dostarczone przez @Gabriele Mariotti wydaje się najlepiej pasować w tej chwili. – Peter

+0

możesz to osiągnąć, ponieważ możesz określić inne informacje o kliencie w tym jsonie, które używa innej nazwy pakietu, aby wskazać inny "projekt", aby twój build debugowania mógł być podobny do debug.com.twoja_pakiet i wskazać go inne miejsce –

+3

Nie widzę, jak tworzenie innej aplikacji na firebase stworzy bazę debugowania. – xsorifc28

Powiązane problemy