我在我的应用程序中包含了gcm的功能,为此我需要为 debug 维护两个google-services.json,为 release 构建一个。怎么做 ??我可以配置gcm而不使用google-services.json ??
答案 0 :(得分:4)
当前插件(com.google.gms:google-services:2.1.X
)支持 风格 ,但不支持类型。
因此,如果您创建了productflavor,则可以将json文件放在src/$flavorname
示例:
app/src/
flavor1/google-services.json
flavor2/google-services.json
目前它不适用于类型(调试,发布......),但你可以像这样使用somenthing:
app/src/release/google-services.json
app/google-services.json
在这种情况下,插件会查找位置并在找到google-services.json文件时停止。
如果你正在使用它,那就变成了:
app/src/foo/release/google-services.json
app/src/foo/google-services.json
您可以找到更新的信息here。
答案 1 :(得分:2)
我当前正在使用以下版本:com.google.gms:google-services:4.3.3,com.google.firebase:firebase-messaging:20.2.0
将google-services.json
文件放在$projectName/app/src/$buildType
目录中。例如,将一个json文件放在src/release
中,将另一个json文件放在src/debug
中。您可能需要创建发布和调试文件夹。
注意:将这些文件添加到app文件夹是一个常见错误,请确保如上所述将其添加到src文件夹中。
google-services插件始终会查找google-services.json 文件放在两个目录中:首先,在 $ projectName / app / src / $ buildType / google-services.json。如果没有 在这里找到它,它在上一层 $ projectName / app / google-services.json。因此,当您构建 应用的调试版本,它将搜索google-services.json 在$ projectName / app / src / debug /目录中。
在下面的链接中,请参见David Ojeda's response。
答案 2 :(得分:0)
首先,将每个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
将其复制到应用程序/ 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附件。
将其复制到应用程序/ 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