我发现即使从我的应用程序中删除了这个json文件,这些服务仍然可以正常工作。
只想确定一下,这个文件到底是干什么用的?它的使用方式是什么?它是如何工作的?
我调查了一下关于google-services插件和json的内容,并找到了该插件的源代码。
被classpath引用的gradle-plugin google-services以及使用apply应用的是一个仅在构建时使用的插件!因此它只影响您的应用程序构建过程,但不影响运行时进程!
这个插件只是作为一个快速启动助手,快速集成Google服务到您的应用程序中。显然,这个过程有些复杂,而且没有文档记录,所以Google应该明确说明这个过程的作用。
实际上,我找到了插件版本com.google.gms:google-services:1.4.0-beta3的源代码,并没有发现任何关于appinvites的具体参考,也没有找到任何Google API关于应用邀请的相关信息!(但也许它只是使用通用API项目和其项目ID,我没有尝试)
google-services gradle插件会在您的应用模块中寻找所提到的google-services.json文件,然后查找由Google API开发者控制台生成,并配置的设置,例如项目ID和跟踪ID等,并将这些设置生成为Android资源值存在以下路径:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
例如,针对您的应用程序的调试版本:app/build/generated/res/google-services/debug/values/values.xml
例如,如果您按照GCM教程操作,JSON文件将包括API项目的ID,形式如下android-resource:。<string name="gcm_defaultSenderId">project-id</string>
这个插件和JSON文件并不是运行或发布您的应用程序所必需的,它只是一个快速入门助手,用于生成一些基本的Android资源文件,以便更轻松地集成特定的Google API功能。
请注意,在下面引用的源代码中,google-services插件始终为在app/build.gradle中定义的每个应用程序变体生成这些android资源。
如果您不想要这样做,您应该在您想要的应用程序变体中使用那些生成的资源,并删除其他资源。不要忘记从app/build.gradle中删除google-services插件应用,否则它将重新生成所有应用程序变体。
此插件和JSON文件不会直接影响您的应用程序中的Google功能的内部工作方式! 如果您已经按照developer.android.com上的旧教程集成了例如GCM或Google Analytics,则根本不需要集成gradle-plugin google-services或google-services.json文件!
当您集成google-services gradle-plugin并同步项目后,Gradle会自动将google-services依赖项下载到类似于此路径的位置(在Windows上,您可能需要查看home/.gradle for Linux):
C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.gms\google-services\1.4.0-beta3\f1580f62e3be313eba041ce19b64fd3f44cf8951\google-services-1.4.0-beta3-sources.jar
如果你解压这个jar文件,你会发现两个文件:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
其中包含Gradle插件的源代码。
GoogleServicesPlugin.groovy
包含应用程序变体的处理和路径等基本定义。
GoogleServicesTask.java
包含实际任务定义,查找以下方法以了解其真正作用:
@TaskAction
public void action() throws IOException {
这个文件的作用是什么:
google-services.json 包含开发者凭据和配置设置,需要在连接 GoogleApiClient 时进行验证。尽管您的服务在检测到开发者帐户后可以在测试设备上正常工作,但在发布应用程序后,如果没有json文件,它将无法工作。 因此,请不要删除它。
官方文档说:
应用程序构建一个GoogleApiClient,指定应用程序将访问哪些范围和API。当GoogleApiClient连接时,用户已经登录。
请参见how it works部分。
String serverClientId = getString(R.string.default_web_client_id);
在google-service.json文档中,有一个包含所有字符串和更多信息的列表。