私は現在のアプリに 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 {