首先,将每个 buildType 的相应 google_services.json 放置在以下位置:
app/src/debug/google_services.json
app/src/main/google_services.json
现在,让我们在 :app 的 build.gradle 中创建一些 gradle 任务,以自动将相应的 google_services.json 移动到 app/google_services.json
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 运行时会发生什么:
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 封闭。
afterEvaluate {
processDebugGoogleServices.dependsOn switchToDebug
processReleaseGoogleServices.dependsOn switchToRelease
}
现在,任何时候 :app:processReleaseGoogleServices 被调用,我们新定义的 :app:switchToRelease 都会被预先调用。调试 buildType 的逻辑相同。您可以运行 :app:assembleRelease 并且发布版本 google_services.json 将自动复制到您的应用模块的根文件夹。
https://medium.com/google-cloud/automatic-per-variant-google-services-json-configurations-with-gradle-d3d3e40abc0e