Zbadałem trochę w sprawie wtyczki Google-services i json i znalazłem źródła tej wtyczki.
Po pierwsze
Gradle-plugin google-services, do którego odwołuje się ścieżka klasy i ma zastosowanie, jest wtyczką tylko do kompilacji! Więc ma to wpływ tylko na proces tworzenia aplikacji, ale nie na proces wykonywania!
Ta wtyczka jest pomyślana tylko jako pomoc w szybkiej integracji usług Google w Twojej aplikacji. Oczywiście proces ten jest nieco zawiły i nie jest udokumentowany, więc Google powinien był wyjaśnić, co robi ten proces.
W rzeczywistości znalazłem kod źródłowy wtyczki w wersji com.google.gms: google-services: 1.4.0-beta3 i nie znalazłem w nim żadnego konkretnego odniesienia dotyczącego zaproszeń do aplikacji, ani nie znalazłem żadnego interfejsu API Google dla zaproszeń do aplikacji! (Ale może po prostu używa ogólnego projektu API z identyfikatorem projektu, nie próbowałem tego)
Co to robi
Wtyczka gradle-service google-services szuka wspomnianego pliku google-services.json w module aplikacji. Następnie szuka skonfigurowanych ustawień, takich jak identyfikator projektu, identyfikator śledzenia itp., Wygenerowany przez konsolę programisty Google API w pliku google-services.json. Na podstawie znalezionych ustawień wartości zasobów systemu Android są generowane w następującej ścieżce:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
Na przykład w przypadku kompilacji do debugowania aplikacji:
app/build/generated/res/google-services/debug/values/values.xml
Np. Jeśli postępujesz zgodnie z samouczkiem GCM, plik JSON będzie zawierał identyfikator projektu interfejsu API jako następujący zasób androida:
<string name="gcm_defaultSenderId">project-id</string>
Więc ta wtyczka i plik JSON nie są niezbędne do uruchamiania lub publikowania aplikacji, jest to tylko pomocnik szybkiego startu do generowania podstawowych plików zasobów Androida w celu łatwiejszej integracji określonych funkcji Google API.
Zauważ w kodzie źródłowym, o którym mowa poniżej, że wtyczka Google-Services zawsze generuje te zasoby Androida dla każdego wariantu aplikacji zdefiniowanego w pliku app / build.gradle.
Jeśli tego nie chcesz, użyj tych wygenerowanych zasobów w wybranych wariantach aplikacji i usuń pozostałe. Nie zapomnij usunąć wtyczki Google-services stosowanej z app / build.gradle, w przeciwnym razie zostanie ona ponownie wygenerowana dla wszystkich wariantów aplikacji.
Czego to nie robi
Ta wtyczka i plik JSON NIE wpływają bezpośrednio na wewnętrzne działanie wspomnianych funkcji Google w Twojej aplikacji! Jeśli korzystałeś już ze starszych tutoriali na developer.android.com, jak zintegrować np. GCM lub Google Analytics, to nie musisz nawet integrować ani gradle-plugin google-services, ani pliku google-services.json!
Zwróć uwagę, gdzie znalazłem źródła
Po zintegrowaniu wtyczki gradle-plugin usług Google i zsynchronizowaniu projektu, Gradle automatycznie pobiera zależność usług Google do ścieżki podobnej do tej (w systemie Windows może być konieczne zajrzenie do katalogu głównego / .gradle dla systemu Linux):
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
Jeśli rozpakujesz ten plik jar, znajdziesz dwa pliki:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
które zawierają zwykły kod źródłowy wtyczki gradle.
GoogleServicesPlugin.groovy
zawiera obsługę wariantów aplikacji i podstawowe definicje ścieżek itp.
GoogleServicesTask.java
zawiera rzeczywistą definicję zadania, poszukaj następującej metody, aby zobaczyć, co tak naprawdę robi:
@TaskAction
public void action() throws IOException {