FirebaseにDevと本番環境でTowプロジェクトを作成します。
SDKを次のようにセットアップします。https://firebase.google.com/docs/android/setupまたはCrashlyticsの場合:https ://firebase.google.com/docs/crashlytics/get-started ? platform=android
最初に、各buildTypeに対応するgoogle_services.jsonを次の場所に配置します。
app/src/debug/google_services.json
app/src/test/google_services.json
app/google_services.json
注:ルートapp / google_services.jsonこのファイルは、ビルドバリアントに従って存在する必要があります。ルートjsonファイルにjsonコードをコピーします
次に、適切なgoogle_services.jsonをapp / google_services.jsonに自動的に移動するために、アプリのbuild.gradleにいくつかのGradleタスクを作成します。
これをapp / Gradleファイルにコピーします
task switchToDebug(type: Copy) {
description = 'Switches to DEBUG google-services.json'
from "src/debug"
include "google-services.json"
into "."
}
task switchToRelease(type: Copy) {
description = 'Switches to RELEASE google-services.json'
from "src/release"
include "google-services.json"
into "."
}
すばらしい—ただし、アプリをビルドする前にこれらのタスクを手動で実行する必要があるのは面倒です。上記の適切なコピータスクを実行する前に実行する必要があります。つまり、assembleDebugまたは:assembleReleaseが実行されます。:assembleReleaseを実行するとどうなるか見てみましょう:これを/ gradlewファイルにコピーします
Zaks-MBP:my_awesome_application zak$ ./gradlew assembleRelease
Parallel execution is an incubating feature.
.... (other tasks)
:app:processReleaseGoogleServices
....
:app:assembleRelease
:app:processReleaseGoogleServicesタスクに注目してください。このタスクは、ルートgoogle_services.jsonファイルの処理を担当します。正しいgoogle_services.jsonが処理されるようにするため、事前にコピータスクをすぐに実行する必要があります。これをbuild.gradleに追加します。囲んでいるafterEvaluateに注意してください。
これをapp / Gradleファイルにコピーします
afterEvaluate {
processDebugGoogleServices.dependsOn switchToDebug
processReleaseGoogleServices.dependsOn switchToRelease
}
これで、:app:processReleaseGoogleServicesが呼び出されると、新しく定義された:app:switchToReleaseが事前に呼び出されます。デバッグ用buildTypeと同じロジック。:app:assembleReleaseを実行すると、リリースバージョンgoogle_services.jsonがアプリモジュールのルートフォルダに自動的にコピーされます。