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
下記はそれ以前の話になります
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を使うことができます
// 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