google-services简介

介绍

作为在Android应用程序中启用Google API或Firebase服务的一部分,必须将google-services.json插件添加到build.gradle文件中:

dependencies {
    classpath 'com.google.gms:google-services:4.3.5'
    // ...
}

google-services插件有两个主要功能:

  1. 处理google-services.json文件并生成可在您的应用程序代码中使用的Android资源。 请参阅添加JSON文件以获取更多信息。
  2. 为已启用的服务所需的基本库添加依赖项。 此步骤要求您在app/build.gradle文件中应用Google Services Gradle插件,如下所示:
apply plugin: 'com.google.gms.google-services'

您可以通过运行**./gradlew :app:dependencies**查看此步骤的结果。

添加json文件

google-services.json文件通常放置在app/目录中(位于Android Studio应用程序模块的根目录)。 从2.2.0版开始,该插件支持构建类型和产品风味特定的JSON文件。 以下所有目录结构均有效:

// dogfood and release are build types.
app/
    google-services.json
    src/dogfood/google-services.json
    src/release/google-services.json
    ...

处理json文件

google-services.json文件具有以下基本结构:

{
  "project_info": {...},
  "client": [...],
}

project_info对象包含有关项目的常规信息,而客户端数组的每个成员均包含有关已添加到项目中的客户端(Android应用程序)的信息。
在为您的Android应用处理JSON文件时,该插件仅根据以下逻辑使用与您的包名(对于当前构建类型)相匹配的客户端对象:

  • 对于客户端数组的每个成员:

    • 检查client_info/android_client_info/package_name的值
    • 如果程序包名称与此值匹配,则返回成员对象。
  • 如果客户端的任何成员都不匹配包名,则将引发异常。

对于本文档的其余部分,我们将使用{YOUR_CLIENT}来引用由上述过程确定的客户端数组的成员。
JSON处理的主要结果是生成两个XML文件,您可以将它们作为Java代码中的Android资源进行引用。 以下是每个文件的示例:
app/build/generated/res/google-services/{build_type}/values/values.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <! -- Present in all applications -->
    <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string>

    <! -- Present in applications with the appropriate services configured -->
    <string name="gcm_defaultSenderId" translatable="false">1035469437089</string>
    <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string>
    <string name="ga_trackingId" translatable="false">UA-65557217-3</string>
    <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string>
    <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>
    <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>
    <string name="project_id" translatable="false">mydemoapp</string>

</resources>

app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="ga_trackingId" translatable="false">UA-65557218-3</string>
</resources>

XML文件中的每个值都位于以下位置的google-services.json文件中。 如果您的Android项目具有某些配置,使您无法使用google-services插件,则可以使用以下值安全地手动重新创建XML文件:
google_app_id:

{YOUR_CLIENT}/client_info/mobilesdk_app_id

gcm_defaultSenderId:

project_info/project_number

default_web_client_id:

{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)

ga_trackingId:

{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id

firebase_database_url:

project_info/firebase_url

google_api_key:

{YOUR_CLIENT}/api_key/current_key

google_crash_reporting_api_key:

{YOUR_CLIENT}/api_key/current_key

project_id:

project_info/project_id

故障排除

问:构建时,我收到以下错误消息:“ File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it”。

答:Firebase控制台将帮助您下载google-services.json。此外,大多数API的快速入门指南均包含生成此文件的说明。 下载google-services.json文件后,将其复制到Android Studio项目的app/文件夹中,如果使用多种构建类型,则将其复制到app/src/{build_type}文件夹中。

问:我找不到符号“R.string.gcm_defaultSenderId”,“R.xml.global_tracker”等。

答:请确保您build.gradle文件中的软件包名与您在创建google-services.json文件时输入的包名相匹配。 如果不确定,请再次执行入门流程并获取一个新的json文件。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值