2016-05-21 10 views
9

nelle sessioni di Google I/O 2016 sono stati mostrati i grandi miglioramenti verso la piena integrazione di Firebase. Nelle mie app, sto provando a migrare alle nuove soluzioni ma ho diverse domande. Uno di loro è il seguente:Come eseguire la versione dell'app di debug su un database Firebase "debug"

In mie applicazioni Firebase, ho usato un parametro per definire il database Firebase come segue (Gradle):

gradle.properties di file:

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

build.gradle File:

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 
    } 

Questo mi ha permesso di eseguire il mio applicazioni di debug nei confronti di un ambiente Firebase di debug, che mi ha aiutato a testare le modifiche nelle regole DataModel e di sicurezza senza compromettere la p ambiente di roduzione.

Nella nuova soluzione Firebase questo non sembra più possibile a causa del file google-services.json generato che contiene il riferimento Firebase (come spiegato qui: https://firebase.google.com/support/guides/firebase-android#import_your_project_to_the_new_firebase_console_numbered).

Quando si tenta di fare riferimento a mia base di dati di debug ottengo il seguente tipo di errori:

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 

La mia domanda: qual è il modo corretto/migliori pratiche per eseguire un app con un database Firebase di prova nella nuova situazione ?

risposta

13

Non sono sicuro che sia la migliore pratica.

È possibile utilizzare diversi file google-services.json.
Sto analizzando il plug-in corrente (com.google.gms:google-services:3.0.0) se supporta i tipi di build. Il precedente (com.google.gms:google-services:2.1.X) supporta i sapori ma non i tipi.

In ogni caso si dovrebbe essere in grado di utilizzare somenthing come questo:

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

In questo caso il plugin appare nelle località e si ferma quando trova un file google-services.json.

In questo modo dovresti essere in grado di utilizzare diverse app Firebase per il debug e il rilascio.

+3

Grazie, questo ha risolto il mio problema. Ho finito per utilizzare una struttura come questa: progetto \ app \ src \ debug \ google-services.json project \ app \ src \ release \ google-services.json' Le build di debug ora funzionano su un database Firebase dedicato (con il debug SHA1) mentre la versione di rilascio dell'app funziona su un database Firebase di produzione. – Peter

+3

@Peter se questo ha risolto il problema, come hai detto, contrassegnalo come corretto. Basta aggiungere questo link per aiutare gli altri come me -> [Organizzare le build di app Android abilitate da Firebase] (https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app- builds.html). –

+1

Ecco un altro blogpost: https://medium.com/@Miqubel/multiple-build-types-in-firebase-on-android-6f6715f6dd83#.da7qmrzbx – lukle

-1

Non sono necessari vari file google-services.json come specificato nella risposta sopra. Invece in Firebase crei un progetto. Ogni progetto può avere più app (anche su piattaforme diverse).

Nel mio caso, per esempio ho due tipi di build (debug e rilascio) e due productFlavors conseguente 4 applicazioni con diversi nomi del pacchetto:

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

Un servizio google.Il file json copre tutte queste varianti e dovrebbe essere inserito nel modulo dell'app del tuo progetto Android Studio.

+0

Grazie per il tuo commento. Quello che sto cercando di ottenere è eseguire la versione di debug della mia app su un database Firebase "debug" (che è diverso dal database "release"). Non vedo come posso ottenere questo risultato con un singolo file google-services.json. La soluzione fornita da @Gabriele Mariotti sembra la soluzione migliore in questo momento. – Peter

+0

è possibile ottenere questo perché è possibile specificare un client diverso in quel json che utilizza un nome di pacchetto diverso per puntare ad altro "progetto" in modo da poter avere la propria build di debug come qualcosa come debug.com.your.package e puntarla su postazione diversa –

+3

Non vedo come la creazione di un'app diversa in Firebase creerà un database di debug. – xsorifc28

Problemi correlati