Help us understand the problem. What is going on with this article?

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

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

gyamoto
最近はスマホアプリでKotlin, Flutterしている それまではRaspberryPi, Ruby, Kinect, Arduino, JS, Elixirを触ったり
team-lab
最新のテクノロジーを活用したシステムやデジタルコンテンツの開発を行うウルトラテクノロジスト集団
https://www.team-lab.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした