google-services.json は実際何をするのでしょうか? 質問する

google-services.json は実際何をするのでしょうか? 質問する

私は現在のアプリに Google Analytics と GCM サービスを追加する作業を行っています。両方のサービスの実装ガイドでは、Google は開発者に json ファイル google-services.json を生成し、アプリのルート ディレクトリの下に置くように求めています。

この json ファイルをアプリから削除しても、サービスは引き続き機能することがわかりました。

確実に知りたいのは、このファイルの実際の用途は何ですか? 用途と動作方法は何ですか?

ベストアンサー1

Google サービス プラグインと json について少し調べたところ、このプラグインのソースが見つかりました。

まず最初に

クラスパスと適用によって参照される gradle-plugin google-services は、ビルド時プラグインのみです。したがって、アプリのビルド プロセスにのみ影響し、ランタイム プロセスには影響しません。

このプラグインは、Google サービスをアプリにすばやく統合するためのクイックスタート ヘルパーとしてのみ使用されます。当然ながら、プロセスはやや複雑で文書化されていないため、Google はこのプロセスが何を行うのかを明確にすべきでした。

実際、プラグイン バージョン com.google.gms:google-services:1.4.0-beta3 のソース コードを見つけましたが、appinvites に関する具体的な参照は見つかりませんでした。また、App Invites 用の Google API も見つかりませんでした。(ただし、プロジェクト ID を持つ汎用 API プロジェクトを使用しているだけかもしれませんが、これは試していません)

何をするのか

google-services gradle-plugin は、アプリ モジュール内で前述の google-services.json ファイルを検索します。次に、Google API 開発者コンソールによって google-services.json ファイルに生成されたプロジェクト 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 ファイルには、次の android-resource として API プロジェクトの ID が含まれます。

<string name="gcm_defaultSenderId">project-id</string>

したがって、このプラグインと JSON ファイルは、アプリの実行や公開に必須ではなく、特定の Google API 機能の統合を容易にするためにいくつかの基本的な Android リソース ファイルを生成するクイックスタート ヘルパーにすぎません。

以下のソース コードでは、google-services プラグインが、app/build.gradle で定義されているすべての app-variant に対して常に android-resources を生成することに注意してください。

これを望まない場合は、必要な app-variants で生成されたリソースを使用し、他のリソースを削除する必要があります。app/build.gradle から google-services プラグインの適用を削除することを忘れないでください。そうしないと、すべての app-variants に対して再生成されます。

何ができないか

このプラグインと JSON ファイルは、アプリの Google 機能の内部動作に直接影響を与えることはありません。developer.android.com の古いチュートリアルに従って、GCM や Google Analytics などを統合している場合は、gradle-plugin google-services または google-services.json ファイルを統合する必要すらありません。

情報源を見つけた場所についてのお知らせ

google-services gradle-plugin を統合し、プロジェクトを同期すると、Gradle は google-services 依存関係を次のようなパスに自動的にダウンロードします (Windows では、Linux の場合は home/.gradle を確認する必要がある場合があります)。

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 ファイルを抽出すると、次の 2 つのファイルが見つかります。

GoogleServicesPlugin.groovy
GoogleServicesTask.java

これには、Gradle プラグインのプレーン ソース コードが含まれています。

GoogleServicesPlugin.groovy

アプリバリアントの処理やパスの基本的な定義などが含まれます。

GoogleServicesTask.java

実際のタスク定義が含まれているので、実際に何が行われるかを確認するには次のメソッドを探します。

@TaskAction
public void action() throws IOException { 

おすすめ記事