9

で、Google I/O 2016セッションでデバッグアプリケーションバージョンを実行する方法は、Firebaseの完全統合に対する大きな改善が示されています。私のアプリでは、私は新しいソリューションに移行しようとしていますが、いくつか質問があります。そのうちの一つは以下の通りです:「デバッグ」Firebaseデータベース

gradle.propertiesファイル:

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

build.gradle私Firebaseアプリで

、私は(Gradleのを)次のようにFirebaseデータベースを定義するためのパラメータを使用しましたファイル:これは私がpに影響を与えることなく、データモデルおよびセキュリティ規則の変更をテストするために私を助けデバッグFirebase環境に対する私のデバッグアプリケーションの実行を許可

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 
    } 

ロービング環境。

新しいFirebaseソリューションでは、これはFirebaseリファレンス(https://firebase.google.com/support/guides/firebase-android#import_your_project_to_the_new_firebase_console_numbered)が含まれているgoogle-services.jsonファイルが生成されているため、これ以上使用できません。

私のデバッグデータベースを参照しようとすると、私はエラーの次の型を取得:

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 

私の質問:新しい状況でテストFirebaseデータベースに対してアプリケーションを実行するための正しい方法/ベストプラクティスは何ですが?

答えて

13

私はそれがベストプラクティスであるかどうかはわかりません。

異なるgoogle-services.jsonファイルを使用することができます。
現在のプラグイン(com.google.gms:google-services:3.0.0)がビルドタイプをサポートしているかどうか調べています。 前のバージョン(com.google.gms:google-services:2.1.X)はフレーバーをサポートしましたが、タイプはサポートしていませんでした。あなたはこのようsomenthingを使用することができるはずですいずれにせよ

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

この場合、プラグインは場所を調べ、それがgoogle-services.jsonファイルを見つけると停止します。

このようにして、デバッグとリリースにさまざまなFirebaseアプリケーションを使用できるようになります。

+3

ありがとう、これは私の問題を解決しました。 'project \ app \ src \ debug \ google-services.json project \ app \ src \ release \ google-services.json'のような構造を使用しました。デバッグビルドは専用のFirebaseデータベースで動作するようになりました。デバッグSHA1)、アプリケーションのリリース版は実動Firebaseデータベースで動作します。 – Peter

+3

@Peterこれがあなたの問題を解決した場合、あなたが言ったように、それを正しいものとしてマークしてください。このリンクを追加するだけで、私のような人たちに役立ちます - > [あなたのFirebase対応のAndroidアプリの整備](https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app- builds.html)。 –

+1

もう一つの良いブログポストがあります:https://medium.com/@Miqubel/multiple-build-types-in-firebase-on-android-6f6715f6dd83#.da7qmrzbx – lukle

-1

上記の答えに示すように、さまざまなgoogle-services.jsonファイルは必要ありません。 Firebaseではなく、プロジェクトを作成します。各プロジェクトは複数のアプリを持つことができます(異なるプラットフォーム間でも)。

  • fullDebug:com.company.myapp.debug
  • fullRelease例えば私の場合は

    私は2つのビルドの種類(デバッグとリリース)と異なるパッケージ名を持つ4つのアプリの中で得られた二productFlavorsを持っています:com.company.myapp

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

1つのGoogleサービス。jsonファイルはこれらの亜種のすべてをカバーし、あなたのAndroid Studioプロジェクトのアプリケーションモジュールに入れるだけです。

+0

あなたのコメントをありがとう。私が達成しようとしているのは、「リリース」データベースとは異なる「デバッグ」Firebaseデータベースで、自分のアプリケーションのデバッグバージョンを実行することです。私はどのように単一のgoogle-services.jsonファイルでこれを達成できるのかわかりません。 @Gabriele Mariottiによって提供されるソリューションは、この時点で最も適しているようです。 – Peter

+0

これは、異なるパッケージ名を使用して他の "プロジェクト"を指し示すjson内の別のclientinfoを指定できるので、デバッグビルドをdebug.com.your.packageのようにすることができます。別の場所 –

+3

firebaseに別のアプリケーションを作成すると、デバッグデータベースが作成される方法がわかりません。 – xsorifc28

関連する問題