如何使用 GCM 3.0 为我的 android 应用程序保留不同的配置

Posted

技术标签:

【中文标题】如何使用 GCM 3.0 为我的 android 应用程序保留不同的配置【英文标题】:How do i keep different configurations for my android app with GCM 3.0 【发布时间】:2015-06-17 20:19:10 【问题描述】:

我想为我的调试/发布版本变体保留不同的配置,但显然,google-services.json 文件只允许一个。有没有其他选择?有没有办法保存多个文件?

【问题讨论】:

见***.com/a/31895658/3014036 【参考方案1】:

我正在使用此解决方法来解决与构建风格类似的问题。

风味特定的 google-service.json 文件存储在 /app/src/flavour-name/google-service.json 下。要将其复制到 /app 目录,可以将以下代码添加到 /app/build.gradle 文件中:

    gradle.taskGraph.beforeTask  Task task ->
        if(task.name ==~ /process.*GoogleServices/) 
            android.applicationVariants.all  variant ->
                if(task.name ==~ /(?i)process$variant.nameGoogleServices/) 
                    copy 
                        from "/src/$variant.flavorName"
                        into '.'
                        include 'google-services.json'
                    
                
            
        
    

在没有风味的情况下(据我了解您的问题),以下 /app/build.gradle 代码 sn-p 在 android studio 测试项目中完成了这项工作:

    gradle.taskGraph.beforeTask  Task task ->
        if(task.name ==~ /process.*GoogleServices/) 
            android.applicationVariants.all  variant ->
                if(task.name ==~ /(?i)process$variant.nameGoogleServices/)
                    copy 
                        from '.'
                        into '.'
                        rename  String fileName ->
                            fileName.replace("google-services-$variant.name.json", 'google-services.json')
                        
                        include "google-services-$variant.name.json"
                    
                
            
        
    

sn-p 需要一个 google-services-debug.json 和一个 google-services-release.json 在你的 /app dir 并将其复制并重命名为 google-services.json

希望这会有所帮助。

【讨论】:

每次都会对所有变体运行。对 ?没有尝试过,但尝试过类似的东西。 我需要删除 src from "src/$variant.flavorName" 之前的第一个 / 否则 @MartinS 你的解决方案简直太棒了。 它应该来自“src/$variant.flavorName”,而不是来自“/src/$variant.flavorName”。请验证 我可以确认第一个 / 必须删除。对我来说,它可以与 Gradle 1.3.1 和 Play Services 插件 1.3.1 一起正常工作,但是在将两者都更新到 1.5.0 时,显示以下错误:File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it @AndroidGecko 是的,如果你删除第一个斜杠,它会起作用:from "/src/$variant.flavorName" 变为 from "src/$variant.flavorName"【参考方案2】:

目前无法定义构建特定的配置。好主意,但似乎有用。

【讨论】:

以上是关于如何使用 GCM 3.0 为我的 android 应用程序保留不同的配置的主要内容,如果未能解决你的问题,请参考以下文章

应用安装时的 android GCM 注册

GCM - 多个通知

如何向 GCM 发布通知

不保证 Gcm 交付

亚马逊、解析、pushwoosh 和 Android 的默认 GCM 推送通知之间的区别?

GCM 云连接服务器 - 如何开始使用它?