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


186

При обновлении моего проекта до последней версии Сервисов 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" />

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

Любые идеи?


У меня точно такая же проблема, но не удалось найти целое число.
— Бьорн Халльстрем

Ответы:


256

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

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

Тогда на вашем проекте

нажмите Control -> Свойства -> Android -> библиотеки, добавить -> выберите проект, который вы только что импортировали -> ОК


Я пробовал это (следуя инструкциям из этого другого вопроса, чтобы найти папку), но Eclipse говорит, что не может записать .projectфайл в указанный google-play-services_libкаталог. Очевидно, что непосредственной причиной является то, что Eclipse не может записывать в каталог Program Files, где находится SDK, но более конкретный вопрос заключается в том, почему необходимо изменить .projectфайл (который, очевидно, принадлежит SDK и поэтому должен быть «правильным») в первую очередь.
— ИЛИ Mapper

Я не видел этого раньше, поэтому я не знаю точно, как это исправить. Это имеет в виду, если явно не изменено, я не думаю, что ошибка существует в папке. Возможно, он просто устарел и нуждается в повторной загрузке (вряд ли это будет проблемой, но вы никогда не узнаете).
— PSchuette

Вы сталкивались с этой ошибкой при попытке добавить библиотеку или при импорте проекта?
— PSchuette

Спасибо - работал на меня, на Eclipse. Я думал, что сделал все правильно, но сделал это заново, и это решило проблему с компилятором.
— Анна Биллстрем

4
Папка, которую вам нужно импортировать, находится здесь: extras \ google \ google_play_services \ libproject
— Камил Сзот

78

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

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

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

Шаг 1 - Начальная структура проекта Итак, моя структура проекта начала выглядеть так ...

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

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

Шаг 4. Нажмите лампочку, чтобы добавить библиотеку google-play-services в качестве зависимости Затем я щелкнул лампочку в нижней части диалогового окна в области сообщений об ошибках, чтобы открыть это маленькое маленькое всплывающее окно, которое дает два варианта ( Добавить в зависимости ... или Удалить библиотеку ). Нажмите Добавить в зависимости ... вариант!

Шаг 5. Добавьте библиотеку в модуль google-play-services_lib. Новое маленькое диалоговое окно должно было появиться. Это дало мне два варианта: один для моего основного проекта (имя размыто), а затем другой для google-play-services_libпроекта. Ваш может иметь кучу больше в зависимости от вашего проекта (как вы можете видеть actionbarsherlock, и тому подобное). Выберите google-play-services_libи нажмите ОК!

И наконец, вы сделали! Я надеюсь, что это помогает кому-то еще там!

Дальнейшая информация

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

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


2
Не работает для меня У меня нет «лампочки внизу диалогового окна в области сообщений об ошибках, чтобы вызвать это маленькое маленькое всплывающее окно, которое дает два варианта выбора»
— Vadorequest

2
В вашем случае, возможно, я бы попытался полностью удалить Сервисы Google Play из вашего проекта и затем повторно импортировать. Поскольку эта пропущенная целочисленная проблема возникает только в том случае, если Сервисы Google Play были импортированы в первую очередь неправильно, возможно, стоит начать с нуля.
— Шарль Мадер

1
@Vadorequest вы также можете выбрать модуль google-play-services-lib и добавить файл google-play-services.jar в качестве зависимости модуля (!! В модуль google-play-services-lib!)
— Су-Ау Хван,

2
В дополнение к этому ответу (специфичному для IntelliJ), если вы планируете использовать методы / классы библиотек, вам нужно перейти в меню «Файл»> «Структура проекта»> выбрать модуль google-play-services_lib> «Зависимости» и проверить «Экспортировано» для the google-play-services.jar
— Су-Ау Хван

2
Описание: добавьте каталог libproject в качестве модуля и сделайте его зависимым от вашего основного проекта, чтобы получить целочисленное значение из каталога
— libproject

31

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


Это было решение, которое также исправило меня, это невероятный контроль со стороны Google, если вы спросите меня.
— Энрике де Соуза

Спасибо, приятель, это решило мою проблему
— Fabii

1
Это исправило мою проблему. Почему импорт eclipse пропустил этот файл? Любая подсказка?
— nizam.sp

24

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

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

в

MyProjectName/res/values/version.xml

3
Это будет работать, но проблема в том, что это делает обновление до более новой версии библиотеки сервисов Google Play немного более раздражающим. Вам, вероятно, придется заменять version.xmlфайл при каждом обновлении.
— Шарль Мадер

20

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

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

Единственное, что он не находит: Ошибка: возникла проблема при настройке проекта ': приложение'. > Не удалось разрешить все зависимости для конфигурации ': app: _debugCompile'. > Не удалось найти версию, которая соответствует com.google.android.gms: play-services: 6.1. +. Искал в следующих местах: jcenter.bintray.com/com/google/android/gms/play-services/... jcenter.bintray.com/com/google/android/gms/play-services
— Маттео

файл: /home/teo/Documents/programmi/android-studio-new/sdk/extras/android/m2repository/com/google/android/gms/play-services/maven-metadata.xml файл: / home / teo / Documents / programmi / android-studio-new / sdk / extras / android / m2repository / com / google / android / gms / play-services / Требуется: xxxxxxx: приложение: не указано
— matteo

Путь, по которому она ищет библиотеку, кажется, не совпадает с тем местом, где менеджер sdk фактически загрузил ее, но даже после создания символической ссылки проблема не устранена. Думаю, я не могу понять, какой именно файл или папку нужно найти. Любая идея?
— Маттео

1
Чтобы узнать, какие у вас версии: "ls -1 $ ANDROID_HOME / extras / google / m2repository / com / google / android / gms / play-services". Чтобы получить более новые версии, запустите менеджер SDK и обновите нужные компоненты. Не связывайтесь с символическими ссылками.
— ООО Софи Софт,

12
  1. Установите «Сервисы Google Play» и «Репозиторий Google» из Android SDK Manager.
  2. Добавьте строку compile 'com.google.android.gms:play-services:4.1.32@aar'в свой build.gradle.
  3. В результате ресурс @integer/google_play_services_versionбудет доступен.

1
Я добавил этот компилятор 'com.google.android.gms: play-services: 4.4.52'
— powder366

это сделало это для меня. Никто не опубликовал, как выглядел конечный результат раздела зависимостей в build.gradle ... это было бы полезно
— snowking16

10

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


Да, я интегрировал библиотеку в свой проект, поместив копию файлов, загруженных с помощью Android SDK Manager, в свой рабочий каталог. Также я обновил библиотеку до этой новой версии, выполнив то же самое (скопировал файлы из каталога Android SDK и переписал существующие в моем проекте).
— Шарль Мадер


7

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

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

введите описание изображения здесь

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


но это делает apk на 5 МБ тяжелее
— Сиддхарт

6

Решено для Затмения

Выполните следующие шаги:

  1. Импортируйте папку google-play-services_lib как проект, используя import-> Existing Android Code Into Workspace
  2. В свойствах проекта выберите раздел Android, в нижней части. В разделе «Библиотека» нажмите «Добавить», выберите google-play-services_lib и «Применить». Чтобы просмотреть скриншот, перейдите по ссылке http://i.stack.imgur.com/opSeJ.png .

Мой google-play-services_libбыл вF:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
— Даниэль Бонетти

5

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

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

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

  1. Откройте файл build.gradle в каталоге вашего модуля приложения. Примечание. Проекты Android Studio содержат файл build.gradle верхнего уровня и файл build.gradle для каждого модуля. Обязательно отредактируйте файл для вашего модуля приложения.
  2. Измените правило сборки в разделе «зависимости», чтобы оно ссылалось на версию play-services, которую вы скачали на своем компьютере разработчика.

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


Наконец хороший, четкий ответ для начинающих Android. Этот ответ должен быть размещен выше.
— Jelle

4

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

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


3

У меня была та же проблема, файл version.xml не был в google-play-services_lib. Просто запустите свой менеджер SDK и примите обновление, особенно то, что связано с «дополнениями».


2

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


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

2

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

dependencies {

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

} 

1

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

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

1

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

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


1

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

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

1

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

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

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

Но тебе нужно android update project -p . -t android-22на google-play-services_libпервом. Эквивалентно, добавь <property name="android.library.reference.1" value="./google-play-services_lib"/>к твоему build.xml(я свернул build.xmlи угробил .properties).
— Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功

0

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

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


0

Я только что обновил сервисы Google Play в папке Extras в Android SDK Manager


0

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

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

0

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

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

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


0

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


Не могли бы вы объяснить немного больше? Как я вижу текущие зависимости и как добавить больше?
— Хасан Гульзар

Я сделал все вручную и методом проб и ошибок, когда написал этот ответ. Использование gradle сделало вещи намного проще.
— goobliata

0

Android Studio 3.3.2 под Windows 10

File -> Invalidate Caches / Restart и выберите invalidate and Restartкнопку в появившемся диалоговом окне.


0

У меня была такая же проблема, добавьте эти 2 строки в ваш build.gradle, проблема, вероятно, будет решена. ;)

dependencies {  
  implementation 'com.google.android.gms:play-services:12.0.1'  
  implementation 'com.google.android.gms:play-services-vision:10.0.0'    
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.