Я трохи дослідив плагін google-services та json та знайшов джерела цього плагіна.
Насамперед
Google-сервіси gradle-plugin, на які посилається classpath та з застосовуванням, є лише плагіном для побудови! Тож це впливає лише на процес складання вашого додатка, але не на процес виконання!
Цей плагін призначений лише як швидкий старт-помічник для швидкої інтеграції служб Google у ваше додаток. Очевидно, що процес дещо складний і не документально підтверджений, тому Google повинен був дати зрозуміти, що робить цей процес.
Насправді я знайшов вихідний код для версії плагіна com.google.gms: google-services: 1.4.0-beta3 і не знайшов у ньому конкретних посилань щодо прикладних програм, а також не знайшов API Google для запрошень на додаток! (Можливо, він просто використовує загальний проект API зі своїм ідентифікатором проекту, я цього не намагався)
Що це робить
Плагін google-services gradle шукає згаданий файл google-services.json у вашому додатку-модулі. Потім він шукає конфігуровані параметри, такі як ідентифікатори проекту та ідентифікатори відстеження та такі, що генеруються консоллю розробника API Google у файл google-services.json. Із знайдених налаштувань значення ресурсів 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 як наступний андроїд-ресурс:
<string name="gcm_defaultSenderId">project-id</string>
Отже, цей плагін та файл JSON не є важливими для запуску чи публікації вашої програми, це лише швидкий старт-помічник для створення деяких основних файлів андроїд-ресурсів для легшої інтеграції конкретних функцій API Google.
Зауважте у вихідному коді, на який вказується нижче, що плагін Google Services завжди генерує ті андроїд-ресурси для кожного варіанта програми, визначеного у вашій програмі / build.gradle.
Якщо ви цього не хочете, слід використати створені ресурси в потрібних варіантах додатків та видалити інші. Не забудьте видалити додаток google-services застосувати з app / build.gradle, інакше він буде відновлений для всіх варіантів додатків.
Чого ні
Цей плагін та JSON-файл НЕ безпосередньо впливають на внутрішню роботу зазначених функцій Google для вашої програми! Якщо ви вже дотримувались старих підручників на developer.android.com щодо інтеграції, наприклад, GCM або Google Analytics, то вам навіть не потрібно інтегрувати ні google-сервіси gradle-плагін, ні файл google-services.json!
Повідомте, де я знайшов джерела
Після інтеграції google-services gradle-плагін та під час синхронізації проекту Gradle автоматично завантажує залежність google-сервісів на шлях, подібний до цього (у Windows, можливо, вам доведеться заглянути у свій домашній / .gradle для 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
Якщо ви витягнете цей jar-файл, ви знайдете два файли:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
які містять простий вихідний код gradle-плагіна.
GoogleServicesPlugin.groovy
містить обробку варіантів додатків та основні визначення шляхів тощо.
GoogleServicesTask.java
містить фактичне визначення завдання, шукайте наступний метод, щоб побачити, що він насправді робить:
@TaskAction
public void action() throws IOException {