回答:
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ファイルに生成されたプロジェクト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ファイルは、アプリの実行や公開に必須ではありません。特定のGoogle API機能を簡単に統合するための基本的なAndroidリソースファイルを生成するためのクイックスタートヘルパーにすぎません。
以下で参照されているソースコードでは、google-servicesプラグインが常にapp / build.gradleで定義されているすべてのapp-variantに対してこれらのandroid-resourcesを生成していることに注意してください。
それが必要ない場合は、生成されたリソースを必要なアプリバリアントで使用し、他のリソースを削除する必要があります。app / build.gradleからgoogle-servicesプラグインapplyを削除することを忘れないでください。そうしないと、すべてのアプリバリアントに対して再生成されます。
このプラグインとJSONファイルは、アプリの上記のGoogle機能の内部動作に直接影響しません。GCMやGoogleアナリティクスなどの統合方法に関するdeveloper.android.comの古いチュートリアルをすでに実行している場合は、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
app-variantsの処理やパスの基本的な定義などが含まれています。
GoogleServicesTask.java
実際のタスク定義が含まれています。実際に何が行われるかを確認するには、次のメソッドを探します。
@TaskAction
public void action() throws IOException {
このファイルは本当に何のためのものですか?
google-services.jsonには、GoogleApiClientとの接続中に確認するために必要な開発者の資格情報と構成設定が含まれています。開発者アカウントを検出しているため、サービスはテストデバイスで正常に機能していますが、アプリをパブリックでリリースした後は、jsonファイルがないと機能しません。削除しないでください。
公式ドキュメントは言う:
アプリケーションはGoogleApiClientを作成し、アプリケーションがアクセスするスコープとAPIを指定します。GoogleApiClientが接続すると、ユーザーはサインインします。
google-services.jsonをモジュールに追加し、クリーンアップと再構築を行います。xmlファイルがapp / build / generated / res / google-services / debug / values / values.xmlにプロジェクトプロパティとともに生成され、通常のxml文字列と同様に簡単にアクセスできます。例:
String serverClientId = getString(R.string.default_web_client_id);
google-service.jsonドキュメントにすべての文字列と詳細情報のリストがあります