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 {
Do czego tak naprawdę służy ten plik:
google-services.json zawiera dane logowania programisty i ustawienia konfiguracji, które są potrzebne do weryfikacji podczas łączenia się z GoogleApiClient. Chociaż Twoja usługa działa dobrze z urządzeniem testowym, ponieważ wykrywa konto programisty, ale po publicznym udostępnieniu aplikacji nie będzie działać bez pliku json. Więc nie usuwaj go.
Oficjalna dokumentacja mówi:
Aplikacja tworzy GoogleApiClient, określając zakresy i interfejsy API, do których aplikacja będzie miała dostęp. Gdy GoogleApiClient łączy się, użytkownik jest zalogowany.
Zobacz sekcję, jak to działa .
źródło
Dodaj google-services.json do swojego modułu i zrób CZYSZCZENIE i ODBUDOWANIE. Plik xml zostanie wygenerowany w app / build / generated / res / google-services / debug / values / values.xml z właściwościami projektu i będzie można łatwo uzyskać do niego dostęp, tak jak zwykły ciąg xml. Przykład:
lista ze wszystkimi ciągami i więcej informacji znajduje się w dokumencie google-service.json
źródło