LoginSignup
82
71

More than 3 years have passed since last update.

Flavor毎に異なったgoogle-services.jsonをつかう

Last updated at Posted at 2015-11-05

app/src/${Flavor}/google-services.json にFlavor毎のファイルを置く、でいけるようになりました

app
└── src
    ├── main
    │   ├── AndroidManifest.xml
    │   ├── java
    │   └── res
    ├── dev
    │   └── google-servicesjson.json
    ├── stg
    │   └── google-services.json
    └── prd
       └── google-services.json

ref: https://firebase.google.com/docs/projects/multiprojects#support_multiple_environments_in_your_android_application

下記はそれ以前の話になります


GCMの導入がやさしい

GoogleCloudMessaging(GCM)を使うとAndroidアプリでプッシュ通知を使うことができます

Set up a GCM Client App on Androidの"GET A CONFIGURATION FILE"を選ぶと、(何度もデザインの変わるGoogleDeveloperコンソールを触らずに)プロジェクトの作成、GCMの設定、認証情報を取得できます

GCMの設定としてgoogle-services.jsonをダウンロード、プロジェクトのappディレクトリ直下に配置します
あとは書かれている通りGradleやManifestを設定するとGCMを使うことができます

.jsonをapp/に置かなければいけない

テスト環境ではこのプッシュ通知設定をつかって本番環境では〜という風に設定を切り替えたいとき、app/に設定ファイルを置く必要があるのでBuildVariantsやProductFlavorsを使ってjsonを切り替えることができません(できたら教えてください)

そこで、以下のようにgradleでjsonファイルをapp/にコピーすることで、環境ごとに異なるgoogle-servicecs.jsonを使うことができます

build.gradle
// Flavor毎に異なるGCM設定をコピーする
gradle.taskGraph.beforeTask { Task task ->
    if (task.name ==~ /process.*GoogleServices/) {
        applicationVariants.all { variant ->
            if (task.name ==~ /(?i)process${variant.name}GoogleServices/) {
                copy {
                    from "src/${variant.flavorName}"
                    into "."
                    include "google-services.json"
                }
            }
        }
    }
}

gradleでapp/src/{develop, staging, product}/google-services.jsonをapp/にコピーしています

gitを使っているとコピーしたjsonが気になるので.gitignoreに入れました

# Flavor毎に異なるGCM設定をコピーする
app/google-services.json

参考:http://stackoverflow.com/questions/30901610/how-do-i-keep-different-configurations-for-my-android-app-with-gcm-3-0

82
71
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
82
71