Подтвердить что ты не робот

Обновление библиотеки Google Play и отсутствующий символ @integer/google_play_services_version

При обновлении моего проекта до последней версии Служб Google Play (v4.0, выпущенных на Хэллоуин-2013), теперь вы должны добавить новый тег в AndroidManifest.xml.

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

К сожалению, когда я пытаюсь это сделать, я получаю эту ошибку компиляции:

android-apt-compiler: /blahblah/AndroidManifest.xml:409: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

Затем я могу перейти к файлу в google-play-services_lib/res/values/version.xml и просмотреть необработанное целое для этого символа:

<integer name="google_play_services_version">4030500</integer>

И затем вставьте его обратно в мой AndroidManifest.xml:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="4030500" />

Выполнение этого работает абсолютно нормально, и я могу скомпилировать и запустить проект и приложение просто отлично. Но это определенно нежелательное исправление с очевидными проблемами с возможностью обновления.

Любые идеи?

4b9b3361

Ответ 1

Обратите внимание, что это исправление может применяться только к пользователям IntelliJ! (Дополнительная информация внизу этой публикации, которая должна применяться ко всем.)

Исправлена ​​ошибка! Я использую IntelliJ, и оказалось, что я просто неправильно сконфигурировал способ включения модуля google-play-services_lib в качестве зависимости.

Как я исправил это полностью через графический интерфейс, а вовсе не редактируя какие-либо файлы, вот несколько скриншотов:

Step 1 - Initial Project Structure Итак, моя структура проекта началась так...

Step 2 - Removed google-play-services library Затем я удалил библиотеку google-play-services из списка зависимостей, выбрав ее, а затем нажав кнопку минуса внизу. Обратите внимание на ошибку в нижней части диалогового окна, так как мой проект абсолютно нуждается в этой библиотеке. Но не волнуйтесь, мы скоро его добавим!

Step 3 - Added google-play-services as a module dependency Затем я добавил google-play-services_lib в качестве зависимости от модуля вместо зависимости от библиотеки. Затем я нажимаю кнопку со стрелкой вверх внизу пару раз, чтобы переместить эту зависимость в верхнюю часть списка. Но обратите внимание на ошибку внизу (мы еще не закончили!)

Step 4 - Click the lightbulb to add the google-play-services library as a dependency Затем я нажал на лампочку в нижней части диалогового окна в области сообщений об ошибках, чтобы отобразить это маленькое всплывающее окно, которое дает два варианта (Добавить в зависимости... или Удалить библиотеку). Нажмите кнопку Добавить в зависимости...

Step 5 - Add the library to the google-play-services_lib module Появилось новое маленькое диалоговое окно. Это дало мне два варианта: один для моего основного проекта (его название размыто), а затем другое для проекта google-play-services_lib. В зависимости от вашего проекта у вас может быть больше шансов (например, вы можете увидеть actionbarsherlock, что-то вроде этого). Выберите google-play-services_lib и нажмите "ОК"!

И, наконец, все готово! Надеюсь, это поможет кому-то еще!

Дополнительная информация

Я считаю, что причина, по которой эта проблема началась, состоит в том, что я подумал, что правильно включил весь проект google-play-services_lib в свой общий проект... но на самом деле я этого не сделал, и вместо этого только правильно включил его jar file (google-play-services_lib/libs/google-play-services.jar). Этот файл jar содержит только код, а не значения ресурсов Android, и поэтому значение @integer/google_play_services_version никогда не было в моем проекте. Но код можно было использовать в моем проекте, и это создавало впечатление, что все в порядке.

И как побочная заметка, исправление этой проблемы также, по-видимому, устранило крах GooglePlayServicesUtil.getErrorDialog(...).show(), который у меня был. Но это также может быть исправлено обновлением, на самом деле не на 100%.

Ответ 2

Для всех, кто использует Eclipse, так вам следует это делать.

Eclipse → import → существующий код Android → просматривать → перейти к google-play-services_lib FOLDER (android-sdk/extras/google/google_play_services/libproject).

Затем, в вашем проекте

control click → properties → android → libraries, add → выбрать проект, который вы только что импортировали, → ok

Ответ 3

Я столкнулся с той же проблемой, и, видимо, Eclipse каким-то образом оставил файл version.xml в /res/values ​​из исходного проекта google-play-services_lib при создании копии. Я вытащил файл из оригинального проекта и вставил его в мою копию проекта, и проблема исправлена.

Ответ 4

В Eclipse после импорта библиотеки воспроизведения Google в рабочую область проекта я просто скопировал файл version.xml из

google-play-services_lib/res/values/version.xml

to

MyProjectName/res/values/version.xml

Ответ 5

Кому-то, кто использует gradle: не включайте источник проекта, а загружайте его с помощью SDK Manager и добавьте эту строку в зависимости:

compile 'com.google.android.gms:play-services:4.0.30'

Ответ 6

  • Установите "Службы Google Play" и "Репозиторий Google" из Android SDK Manager.
  • Добавьте строку compile 'com.google.android.gms:play-services:[email protected]' к build.gradle.
  • В результате будет доступен ресурс @integer/google_play_services_version.

Ответ 7

С манжеты, похоже, что ваш проект подключен к более старой версии проекта библиотеки Play Services. Рекомендуемый подход Google - это найти проект библиотеки в SDK и сделать локальную копию. Это означает, однако, что в любое время, когда вы обновляете проект библиотеки Play Services через диспетчер SDK, вам также необходимо заменить свою копию на новую копию.

Ответ 9

после обновления до последней версии у меня была эта проблема со всеми моими проектами, но было решено просто добавить ссылку на библиотеку:

Если у вас нет библиотеки в вашем рабочем пространстве в Eclipse, вы можете добавить ее с помощью: FileImportExisting Android Code Into Workspace → просмотреть и перейти к google-play-services_lib project lib, (android-sdk/extras/google/google_play_services/libproject).

enter image description here

, затем удалив папки /bin и /gen моего проекта (что-то похожее на параметр clean) и снова создайте проект.

Ответ 10

Решено для Eclipse

Следуйте следующим шагам:

  • Импортировать папку google-play-services_lib в качестве проекта, используя import- > Существующий код для Android в рабочее пространство
  • В свойствах проекта выберите раздел Android, внизу. В разделе "Библиотека" нажмите "Добавить" и выберите "google-play-services_lib" и "Применить". Перейдите по ссылке http://i.stack.imgur.com/opSeJ.png, чтобы увидеть скриншот

Ответ 11

Сайт разработчика Google Android содержит инструкции о том, как добавить сервисы Google Play в свой проект, и они также имеют отношение к тому, как обновить версию Служебных услуг. Существует даже выпадающее меню для просмотра инструкций для Eclipse, Android Studio или "Что-то еще". Это было бы лучшим местом для просмотра инструкций в случае их изменения. Страница находится здесь:

http://developer.android.com/google/play-services/setup.html

Но так как большинство ответов здесь для Eclipse, вот краткий обзор для обновления Play Services с Android Studio

  • Откройте файл build.gradle внутри вашего каталога модулей приложений. Примечание. Проекты Android Studio содержат файл build.gradle верхнего уровня и файл build.gradle для каждого модуля. Обязательно отредактируйте файл для своего прикладного модуля.
  • Обновите правило сборки в разделе "зависимости", чтобы передать версию игровых сервисов, загруженных на вашу машину разработки.

Вы можете найти номер версии для версии игровых сервисов, которую вы загрузили на своей машине разработки, заглянув в папку \sdk\extras\google\m2repository\com\google\android\gms\play-services, как описано здесь: Как сопоставить версию Google Play Services с установленной версией?

Ответ 12

Для Eclipse я просто добавил ссылку на проект в google-play-services_lib в:

Свойства-Android В области "Библиотека" (нижняя панель) убедитесь, что указан список google-play-services_lib. Если нет, нажмите кнопку "Добавить.." и выберите google-play-services_lib.

Ответ 13

У меня была такая же проблема, файл version.xml не был в google-play-services_lib. Просто запустите диспетчер sdk и примите обновление, особенно в отношении "дополнительных".

Ответ 14

При импорте google-play-services_lib проверьте код версии, определенный в AndroidManifest.xml и version.xml. Я нашел разницу в коде версии и изменил ее на 4242000. После внесения изменений больше не возникает ошибка компиляции в @integer/google_play_services_version. enter image description here

Ответ 15

Исправлено добавлением сервисов Google Play к моему модулю: app gradle build file. В документации также говорится обновить версию при обновлении GMS.

dependencies {

compile 'com.google.android.gms:play-services:9.6.1'

} 

Ответ 16

Ниже приведены основные действия, которые позволят избежать множества ошибок при использовании сервиса Google Play Lib:

  • Обязательно скопируйте проект lib в рабочее пространство проектов Eclipse.
  • Целевой SDK для проекта Google play-сервиса должен быть "Google
  • API "3. Метаданные должны быть добавлены в файл манифеста.
  • Для вашего целевого SDK проекта должно быть 17, если вы не полностью обновлено до 19, потому что в некоторых случаях 19 не работают хорошо.

Ответ 17

У меня была такая же проблема с проектом с использованием Maven и IntelliJ. Службы Google Play добавляются как зависимость от maven. Конструкция maven отлично работала из командной строки, но IntelliJ жаловался на этот недостающий символ @integer/google_play_services_version

В моем случае я принудительно обновил файлы POM maven и решил проблему.

Ответ 18

В моем случае мне нужно было скопировать папку google-play-services_lib FOLDER в тот же DRIVE исходных кодов моих приложений

  • F:\Products\Android\APP *.java < - Мои приложения здесь, поэтому я скопировал их в папку ниже
  • F:\Products\Android\ЛИЭС\Google-игра-services_lib

Ответ 19

Если вы не используете IDE, а используете сборку командной строки (используя ant и ndk-build), вот как это решить:

Установите все детали req'd с помощью команды android. Затем введите копию google-play-service_lib/в корневой каталог проекта. Измените project.properties, чтобы включить эту строку:

android.library.reference.1=./google-play-services_lib

Ответ 20

У меня была такая же проблема. Проблема заключалась в том, что "google-play-services.jar" не был правильно импортирован в мой проект, хотя он был частью проекта google_play_service_lib. Если вы используете Eclipse, проверьте и посмотрите, можете ли вы видеть файл jar файлов игровых сервисов в разделе "Частные библиотеки Android" и если он экспортируется библиотекой.

Я использую инструменты платформы Android SDK версии 17 (не 19) и Android SDK 22.0.1

Ответ 21

Я только что обновил службы Google Play в папке "Дополнительно" в Android SDK Manager

Ответ 22

Google предлагает вам не создавать проект непосредственно из каталога SDK. Лучше скопировать проект lib в место, где находится ваше приложение, а затем импортировать его оттуда. В противном случае при следующем запуске проекта для другого приложения он уже будет использоваться.

https://developer.android.com/google/play-services/setup.html

Примечание. Вы должны ссылаться на копию библиотеки, которую вы скопировали в рабочую область разработки, - вы не должны ссылаться на библиотеку непосредственно из каталога Android SDK.

Ответ 23

Проблема для меня заключалась в том, что проект библиотеки и проект с использованием игровых сервисов были в разных каталогах. Так просто:

  • 1. Добавьте файлы в одну рабочую область, затем удалите библиотеку.
  • 2.Restart eclipse
  • 3.Добавьте проект библиотеки снова
  • 4.Clear

Ответ 24

Любой, кто ищет в 2017 году, версия игровых сервисов 10.0.1 требует импорта play-services-basement (используется для play-services-base).

Ответ 25

Android Studio 3.3.2 под Windows 10

File → Invalidate Caches/Restart и в invalidate and Restart диалоговом окне выберите " Invalidate" invalidate and Restart.