首先,将每个 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代码
现在,让我们在您的应用程序的 build.gradle 中创建一些 gradle 任务,以自动将相应的 google_services.json 移动到 app/google_services.json
将其复制到 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 将自动复制到您的应用模块的根文件夹。
归功于:Zak Taccardi
https://medium.com/google-cloud/automatic-per-variant-google-services-json-configurations-with-gradle-d3d3e40abc0e