Помилка ініціалізації GoogleService


113

Я використовую Google Maps у своєму додатку для Android. Я створив ключ і додав необхідні дозволи у файл маніфесту. Але незабаром, коли я запускаю програму, я отримую це повідомлення у відладчику:

Помилка ініціалізації GoogleService, статус: 10, відсутній очікуваний ресурс: "R.string.google_app_id" для ініціалізації служб Google. Можливі причини відсутні у плагіні google-services.json або com.google.gms.google-services gradle.

Я не впевнений, що не так. Карта працює чудово, і я можу користуватися нею без проблем. Мій файл gradle має цей запис:

компілювати 'com.google.android.gms: play-services: 8.4.0'

На що він скаржиться і як це полегшити?


це у вашому маніфесті: <meta-data android: name = "com.google.android.gms.version" android: value = "@ integer / google_play_services_version" />
j2emanue


Я спробував і те, і інше, але все одно отримую те саме повідомлення!
Зак

1
Чи оновлено служби відтворення пристрою apk?
Абхігян

Жодне з цих рішень не спрацювало, але, здається, оновлення APK Services Services зробило свою справу!
midoriha_senpai

Відповіді:


38

Потрібно розмістити файл конфігурації ( google-services.json), згенерований developer.google.com , як зазначено на другому кроці офіційних документів тут

Процес простий

  1. Ви можете вибрати свій проект або створити новий.
  2. Потім після вибору потрібних послуг (у даному випадку служби карт), ви можете створити файл конфігурації.

    Для людей, які перейшли до проектів Firebase, вони можуть отримати те саме, перейшовши до консолі Firebase , вибравши проект та в налаштуваннях ви знайдете файл конфігурації.

  3. Потім, як цитується в кроці 3 офіційних документів тут

    Скопіюйте google-services.jsonфайл, який ви щойно завантажили, у додаток / або мобільний / каталог свого Android

PS: Для людей, які відхиляються від цієї відповіді, будь ласка, залиште коментар щодо того, чому ви проголосуєте за неї.


6
Чи нам насправді це потрібно в наших додатках з новою версією Служб Google Play? Або це лише для входу в Google? Дивно здається, що журнали видають мені помилки так, ніби мені це потрібно, але я не можу
RED_

2
@Radix ... Я перейшов до посилання, яким ви поділилися, але він попросив мене зареєструватися для входу в Google або Google Cloud Messaging ... нічого про карту. Будь-яка ідея? Крім того, копіювання цього файлу json прямо під / в додаток є дивним ... Ви можете уточнити? Велике спасибі!
Джонні Ву

2
У нашому додатку вже був google-services.json, але нам довелося відтворити його під час оновлення до 8.4.0.
Рой Солберг

1
те саме питання, додавши google-services.json не допомогло, дивно, що він не бачить моє вже активоване gcm і хоче кожен раз створювати власний ключ сервера
Ендрю В.

11
Дивіться правильну відповідь тут від менеджера продуктів у Google: stackoverflow.com/questions/34365369/…
Ахмед Мунір

52

[Від менеджера продуктів @ Google]

Виправити цю проблему можна, завантаживши та скопіювавши google-services.jsonфайл для додатка Android, виконавши наведені нижче дії.

  • Виберіть назву програми / проекту та ім'я пакету Android за цим посиланням та натисніть Continue to Choose and configure services.
  • Клацніть Continue to Generate Configuration files.
  • Завантажте google-services.jsonта скопіюйте файл у каталог app/або mobile/модуль у вашому проекті Android.

Якщо ви раніше імпортували ваш проект Google у Firebase, ви можете отримати оновлений google-services.json з консолі Firebase у розділі Налаштування проекту.

НЕ КУПУЙТЕ ПРОЕКТНІЙ НОМЕР, як це запропоновано однією з інших відповідей, оскільки google_app_id стосується вашої програми в рамках проекту, а не самого проекту.


1
Для людей, які використовують пладі-експериментальний плагін, google-services.json не набуде чинності безпосередньо. Будь ласка, зверніться до stackoverflow.com/a/38097895/457137 для вирішення проблеми.
зевойд

Чому обов’язково включати файл json? Чому я не можу надати ідентифікатор під час виконання коду?
der_michael

Файл йде в / dir програми , а не dir верхнього рівня?
ІгорГанапольський

11

У моєму випадку причиною цієї помилки було те, що плагін Служб Google для Gradle та бібліотеки Play Services були несумісними версіями. Інструкції для сумісних версій:

1) Додайте залежність до свого проекту.gradle на рівні проекту:

classpath 'com.google.gms:google-services:1.5.0-beta2'

2) Додайте плагін до свого build.gradle на рівні програми:

apply plugin: 'com.google.gms.google-services'

3) Якщо ви використовуєте Android Studio, це рядок, який потрібно додати до розділу залежності файлу build.gradle програми:

dependencies {
  compile "com.google.android.gms:play-services:8.3.0"
}

Джерело: https://developers.google.com/cloud-messaging/android/client


1
Дякую, але це не спрацювало для мене - Android Studio наполягає на тому, що у мене також встановлений файл google-services.json, хоча я вважав це зайвим, якщо ви дотримуєтесь трьох кроків, що вище, які повинні перекрити потребу у файлі? Що підштовхує мене до запитання: Навіщо мені потрібна система входу в систему користувачів Google, якщо все, що я надаю, - це основне відображення?
iaindownie

1
Моє рішення не було в списку, тому я відповів на питання, щоб дати людям ще одне потенційне рішення цієї проблеми. У вашому випадку у вас можуть бути встановлені додаткові бібліотеки. Спробуйте лише скористатисьcom.google.android.gms:play-services-maps:8.4.0
13rac1

@eosrei, використовуючи лише com.google.android.gms: play-services-maps: 8.4.0 працював для мене, дякую!
akshay7692

4

Я зустрів ту саму проблему і вирішив її за офіційним рішенням .

Ось такі кроки:

  1. отримати файл конфігурації google-services.jsonза цим посиланням .

  2. Скопіюйте google-services.jsonфайл, який ви щойно завантажили, у додаток / або мобільний / каталог свого проекту Android Studio.

  3. Додайте залежність до свого проекту.gradle на рівні проекту:

    classpath 'com.google.gms:google-services:1.5.0-beta2'
  4. Додайте плагін до свого build.gradle на рівні програми:

    apply plugin: 'com.google.gms.google-services'
  5. Додайте цю залежність до свого build.gradle на рівні програми:

    dependencies {
        compile "com.google.android.gms:play-services:8.3.0"
    }

1
Я думаю, що краще використовувати com.google.gms: google-services: 1.5.0, оскільки це краще, ніж бета-версія, щоб видалити деякі непередбачувані помилки у вашому додатку.
Андрій В.

@AndrewV. Так, я згоден. Версія "1.5.0-beta2" була скопійована із посилання, яке я дав вище.
Буде

1

Для тих, хто стикається з цією проблемою навіть після правильної настройки служб відтворення та розміщення google-services.jsonфайлу у project/appпапці, власне рішення - це

Build > Rebuild Project

Можливо, через те, що рядки з файлу json не інтегруються в складені ресурси, поки не буде виконано повне відновлення.


1

Для Xamarin / Visual Studio Mac мені потрібно було додати це внизу мого Droid.csproj

<Target Name="ProcessGoogleServicesJson" Condition=" '@(GoogleServicesJson)' != '' AND '$(AndroidApplication)' == 'True' AND '$(DesignTimeBuild)' != 'True'" BeforeTargets="$(ProcessGoogleServicesJsonBeforeTargets)" AfterTargets="$(ProcessGoogleServicesJsonAfterTargets)">
<Message Text="Using ProcessGoogleServicesJson override" Importance="high" />
<ProcessGoogleServicesJson GoogleServicesJsons="@(GoogleServicesJson)" IntermediateOutputPath="$(IntermediateOutputPath)" MonoAndroidResDirIntermediate="$(MonoAndroidResDirIntermediate)" AndroidPackageName="$(_AndroidPackage)">
    <Output ItemName="_AndroidResourceDest" TaskParameter="GoogleServicesGeneratedResources" />
    <Output ItemName="FileWrites" TaskParameter="GoogleServicesGeneratedResources" />
</ProcessGoogleServicesJson>
<ItemGroup>
    <FileWrites Include="$(IntermediateOutputPath)\ProcessGoogleServicesJson.stamp" />
</ItemGroup>

https://github.com/xamarin/GooglePlayServicesComponents/isissue/64


0

Це трапляється і зі мною. У моєму випадку це тому, що студія Android намагалася вставити якийсь код до моєї основної діяльності. Видалення коду виправляє помилку

Вставлений код стосується індексації додатків:

https://developers.google.com/app-indexing/android/publish


0

У мене тоді був такий самий випуск. Вдалося вирішити це, використовуючи лише необхідну бібліотеку служб ігор, що в моєму випадку GCM.

Замість цього com.google.android.gms:play-services:8.4.0я використовую com.google.android.gms:play-services-gcm:8.4.0. Дивіться тут для отримання додаткової інформації; це також вирішує проблему мультидекса.

Тоді я застосував і підхід @Radix, і @ Alexander, щоб видалити повідомлення GCM було виведено в logcat щодо google-services.json.



0

Швидке рішення я використовував , щоб відключити підпис. Якщо ви не хочете створювати виробничий код, ви можете встановити свій варіант збірки на налагодження, localOldDebug або localDebug.

Клацніть на варіанти складання внизу зліва в Android Studio.

як-відключити-згенеровано-підписано-apk-android-studio


можна задати питання як коментар
jjj

-2

Просто є ще одне рішення, яке я видаляю випадково

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
        .findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

Додайте це і працюйте, це для нового рішення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.