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

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

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

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

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

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

11 ответов

Решение

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

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

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

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

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

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

PS: Если вы не согласны с ответом на этот вопрос, оставьте комментарий, почему вы голосуете против него.

[От менеджера по продукту @ 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 относится к вашему приложению в проекте, а не к самому проекту.

В моем случае причиной этой ошибки было то, что плагин 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

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

Вот шаги:

  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"
    }
    

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

Build > Rebuild Project

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

Для 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

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

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

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

Нажмите на вариант сборки в левом нижнем углу в Android Studio.

как к отключить сгенерированный-зарегистрировано APK-андроид-студия

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

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

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

Просто есть другое решение, которое я удаляю случайно

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

Добавьте это и работайте, для нового решения

Другие вопросы по тегам