現在のアプリにGoogleアナリティクスとGCMサービスを追加しています。両方のサービス実装のガイドで、Googleは開発者にjsonファイルを生成するように依頼します:google-services.jsonとそれをアプリのルートディレクトリに配置します。
このjsonファイルをアプリから削除しても、サービスは機能することがわかりました。
確かに知りたいのですが、このファイルは本当に何のためですか?その使用方法とその仕組み
Google-servicesプラグインとjsonについて少し調べて、このプラグインのソースを見つけました。
クラスパスおよびapplyで参照される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は、app-moduleで上記のgoogle-services.jsonファイルを探します。次に、Google APIデベロッパーコンソールによってgoogle-services.jsonファイルに生成されたproject-idやtracking-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リソースとして含まれます。
<string name="gcm_defaultSenderId">project-id</string>
したがって、このプラグインとJSONファイルは、アプリの実行や公開に必須ではありません。特定のGoogle API機能を簡単に統合するための基本的なAndroidリソースファイルを生成するクイックスタートヘルパーにすぎません。
以下で参照するソースコードで、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では、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-pluginのプレーンソースコードが含まれています。
GoogleServicesPlugin.groovy
アプリバリアントの処理とパスなどの基本的な定義が含まれます。
GoogleServicesTask.Java
実際のタスク定義が含まれています。次のメソッドを探して、実際に何が行われるかを確認してください。
@TaskAction
public void action() throws IOException {
このファイルの実際の目的:
google-services.jsonには、GoogleApiClientとの接続中に確認する必要がある開発者の資格情報と構成設定が含まれています。開発者アカウントを検出しているため、サービスはテストデバイスで正常に機能していますが、アプリを公開した後は、jsonファイルがないと機能しません。削除しないでください。
公式文書には次のように書かれています:
アプリケーションはGoogleApiClientを構築し、アプリケーションがアクセスするスコープとAPIを指定します。 GoogleApiClientが接続すると、ユーザーはサインインします。
仕組み セクションを参照してください。
Google-services.jsonをモジュールに追加し、CLEAN and A REBUILDを実行します。プロジェクトのプロパティとともにxmlファイルがapp/build/generated/res/google-services/debug/values/values.xmlに生成され、通常のxml文字列のように簡単にアクセスできます。例:
String serverClientId = getString(R.string.default_web_client_id);
google-service.json doc にすべての文字列とmomre情報のリストがあります