it-swarm.com.ru

GoogleService не удалось инициализировать

Я использую Google Maps в своем приложении для Android. Я создал ключ и добавил необходимые разрешения в файл манифеста. Но вскоре я запускаю приложение и получаю это сообщение в отладчике:

Не удалось инициализировать GoogleService, статус: 10, отсутствует ожидаемое ресурс: "R.string.google_app_id" для инициализации служб Google. Возможные причины отсутствуют google-services.json или com.google.gms.google-сервис плагин Gradle.

Я не уверен, что не так. Карта работает нормально, и я могу использовать ее без проблем. Мой файл Gradle имеет эту запись:

скомпилируйте 'com.google.Android.gms: play-services: 8.4.0'

На что это жалуется и как мне облегчить это?

109
Zach

Вам необходимо разместить файл конфигурации (google-services.json), сгенерированный developer.google.com , как указано на 2-м шаге официальных документов здесь

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

  1. Вы можете выбрать свой проект или создать новый.
  2. Затем, выбрав нужные сервисы (в данном случае сервис карт), вы можете сгенерировать файл конфигурации.

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

  3. Тогда, как указано в шаге 3 официальных документов здесь

    Скопируйте файл google-services.json, который вы только что загрузили, в каталог app/или mobile/вашего Android

P.S: Для людей, голосующих против этого ответа, оставьте комментарий, почему вы отказываетесь голосовать за него.

36
Nishant.

[От менеджера по продукту @ 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 в разделе «Настройки проекта».

НЕ КОПИРУЙТЕ PROJECT_NUMBER, как предлагается в одном из других ответов, поскольку google_app_id относится к вашему приложению в проекте, а не к самому проекту.

52
Sriram

В моем случае причиной этой ошибки было то, что плагин Google Services для Gradle и библиотека Play Services были несовместимыми версиями. Инструкции для совместимых версий:

1) Добавьте зависимость к вашему проекту на уровне build.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

10
13rac1

Я встретил ту же проблему и решил ее, следуя официальному решению .

Вот шаги:

  1. получить файл конфигурации google-services.json из эта ссылка .

  2. Скопируйте файл google-services.json, который вы только что загрузили, в каталог app/или mobile/вашего проекта Android Studio.

  3. Добавьте зависимость к вашему уровню проекта build.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"
    }
    
3
Will

Для 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/issues/64

1
stepheaw

Это также случилось со мной. В моем случае это связано с тем, что Android-студия пыталась вставить код в мою основную деятельность. Удаление кода исправляет ошибку

Вставленный код предназначен для индексирования приложений:

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

0
Superbiji

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

Build > Rebuild Project

Возможно, из-за того, что строки из файла json не интегрированы в скомпилированные ресурсы, пока не будет выполнена полная перестройка.

0
anandbibek

Быстрое исправление, которое я использовал, чтобы отключить подпись. Если вы не хотите создавать производственный код, вы можете настроить вариант сборки на отладку, localOldDebug или localDebug.

Нажмите «Создать варианты» в левом нижнем углу в Android Studio.

Как отключить сгенерированный подписанный apk-Android-studio

0
Dudas

Вы можете изменить versionCode и versionName вашего приложения в файле Gradle.

0
F. Milliard

У меня была такая же проблема тогда. Был в состоянии решить ее, используя только необходимые библиотеки сервисов воспроизведения, которые в моем случае 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
SanicBoom