无法获取未知属性'processReleaseGoogleServices'

use*_*656 9 android gradle android-studio

我更新了使用Android Studio 2.2和Gradle 2.2.0.现在我有一个问题.

我按照这篇文章https://medium.com/google-cloud/automatic-per-variant-google-services-json-configurations-with-gradle-d3d3e40abc0e#.g1p7c1tx2配置两个"google-services.json"文件到用于dev vs prod构建,并在我的app/build.gradle文件中使用以下方法在复制两个"google-services.json"文件之间切换.

afterEvaluate {
    processDebugGoogleServices.dependsOn switchToDebug
    processReleaseGoogleServices.dependsOn switchToRelease
}

task switchToDebug(type: Copy) {
    description = 'Switches to DEBUG google-services.json'
    from "src/gcm-dev"
    include "google-services.json"
    into "."
}

task switchToRelease(type: Copy) {
    description = 'Switches to RELEASE google-services.json'
    from "src/gcm-prod"
    include "google-services.json"
    into "."
}
Run Code Online (Sandbox Code Playgroud)

Gradle符合要求但是当我点击Android Studio中的"运行应用程序"(三角形"播放"图标)或"调试应用程序"(带有错误的三角形"播放"图标)按钮时,我得到以下内容:

* What went wrong:
A problem occurred configuring project ':app'.
> Could not get unknown property 'processReleaseGoogleServices' for object of type com.android.build.gradle.AppExtension.
Run Code Online (Sandbox Code Playgroud)

请帮助,非常感谢.

小智 6

我有同样的问题,问题是在启用即时运行.尝试禁用它并再次运行.


Vol*_*myr 1

另一种方法是通过以下方式引用任务:

tasks.whenTaskAdded { task ->
    if (task.name == 'assembleDebug') {
        task.dependsOn 'switchToDebug'
    } else if (task.name == 'assembleRelease') {
        task.dependsOn 'switchToRelease'
    }
}
Run Code Online (Sandbox Code Playgroud)

更新

您在评论中提到的问题与您的google-services.json文件有关。您需要google-services.json放入app/ dir. 对于每种构建类型,文件夹中应该有相应的目录app/src。如果文件已存在,请检查其中的包名称是否正确

"client_info": {
"mobilesdk_app_id": "1:6596814400689:android:65d6f25f5006145",
"android_client_info": {
  "package_name": "com.my.app.package.name"
}
Run Code Online (Sandbox Code Playgroud)