Ich habe ein bisschen nach dem Google-Services-Plugin und json gesucht und die Quellen für dieses Plugin gefunden.
Das wichtigste zuerst
Das Gradle-Plugin Google-Services, auf das durch classpath und mit apply verwiesen wird, ist nur ein Plugin zur Build-Zeit! Es beeinflusst also nur den Erstellungsprozess Ihrer App, nicht aber den Laufzeitprozess!
Dieses Plugin ist nur als Schnellstarthilfe für die schnelle Integration von Google-Diensten in Ihre App gedacht. Offensichtlich ist der Prozess etwas kompliziert und nicht dokumentiert, daher hätte Google klarstellen müssen, was dieser Prozess bewirkt.
Tatsächlich habe ich den Quellcode für die Plugin-Version com.google.gms: google-services: 1.4.0-beta3 gefunden und darin keinen spezifischen Verweis auf Appinvites gefunden, noch habe ich eine Google-API für App-Einladungen gefunden! (Aber vielleicht verwendet es nur ein generisches API-Projekt mit seiner Projekt-ID, ich habe dies nicht versucht)
Was es macht
Das Gradle-Plugin von google-services sucht in Ihrem App-Modul nach der genannten Datei google-services.json. Anschließend wird nach konfigurierten Einstellungen wie Projekt-IDs und Tracking-IDs usw. gesucht, die von der Google API-Entwicklerkonsole in der Datei google-services.json generiert wurden. Aus den gefundenen Einstellungen werden Android-Ressourcenwerte in den folgenden Pfad generiert:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
Zum Beispiel für einen Debug-Build Ihrer App:
app/build/generated/res/google-services/debug/values/values.xml
Wenn Sie beispielsweise dem GCM-Lernprogramm folgen, enthält die JSON-Datei die ID des API-Projekts als folgende Android-Ressource:
<string name="gcm_defaultSenderId">project-id</string>
Daher sind dieses Plugin und diese JSON-Datei nicht unbedingt erforderlich, um Ihre App auszuführen oder zu veröffentlichen. Es ist lediglich ein Schnellstart-Hilfsprogramm zum Generieren einiger grundlegender Android-Ressourcendateien zur einfacheren Integration bestimmter Google API-Funktionen.
Beachten Sie im Quellcode, auf den unten verwiesen wird, dass das Google-Services-Plugin immer diese Android-Ressourcen für jede App-Variante generiert, die in Ihrer app / build.gradle definiert ist.
Wenn Sie das nicht möchten, sollten Sie diese generierten Ressourcen in den gewünschten App-Varianten verwenden und die anderen löschen. Vergessen Sie nicht, das Google-Services-Plugin aus app / build.gradle zu entfernen, da es sonst für alle App-Varianten neu generiert wird.
Was es nicht tut
Dieses Plugin und die JSON-Datei haben KEINEN direkten Einfluss auf das Innenleben der genannten Google-Funktionen für Ihre App! Wenn Sie bereits älteren Tutorials auf developer.android.com zum Integrieren von z. B. GCM oder Google Analytics gefolgt sind, müssen Sie weder das Gradle-Plugin google-services noch die Datei google-services.json integrieren!
Beachten Sie, wo ich die Quellen gefunden habe
Nachdem Sie das Google Services-Gradle-Plugin integriert und Ihr Projekt synchronisiert haben, lädt Gradle die Google Services-Abhängigkeit automatisch auf einen ähnlichen Pfad herunter (unter Windows müssen Sie möglicherweise in Ihr Home / .gradle für Linux schauen):
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
Wenn Sie diese JAR-Datei extrahieren, finden Sie zwei Dateien:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
die den einfachen Quellcode des Gradle-Plugins enthalten.
GoogleServicesPlugin.groovy
enthält die Handhabung der App-Varianten und grundlegende Definitionen von Pfaden etc.
GoogleServicesTask.java
Enthält die eigentliche Aufgabendefinition. Suchen Sie nach der folgenden Methode, um zu sehen, was sie wirklich tut:
@TaskAction
public void action() throws IOException {
Wofür ist diese Datei wirklich:
google-services.json enthält Entwickleranmeldeinformationen und Konfigurationseinstellungen, die zur Überprüfung während der Verbindung mit GoogleApiClient erforderlich sind. Obwohl Ihr Dienst mit Ihrem Testgerät einwandfrei funktioniert, da er Ihr Entwicklerkonto erkennt, funktioniert er nach der Veröffentlichung Ihrer App in der Öffentlichkeit nicht ohne die JSON-Datei. Also nicht löschen.
Die offizielle Dokumentation sagt:
Die Anwendung erstellt einen GoogleApiClient und gibt an, auf welche Bereiche und APIs die Anwendung zugreifen soll. Wenn der GoogleApiClient eine Verbindung herstellt, ist der Benutzer angemeldet.
Siehe den Abschnitt, wie es funktioniert .
quelle
Fügen Sie Ihrem Modul google-services.json hinzu und führen Sie CLEAN und A REBUILD durch. Eine XML-Datei wird in app / build / generate / res / google-services / debug / values / values.xml mit Ihren Projekteigenschaften generiert, und Sie können dann wie bei einer normalen XML-Zeichenfolge problemlos darauf zugreifen. Beispiel:
Es gibt eine Liste mit allen Zeichenfolgen und weiteren Informationen in google-service.json doc
quelle