Обновление библиотеки служб 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.