Оновлення бібліотеки Служб 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" />

Це працює абсолютно добре, і тоді я можу скласти і запустити проект і додаток просто чудово. Але це, безумовно, небажана помилка з очевидними проблемами оновлення.

Будь-які ідеї?


мають точно таку ж проблему зараз - але не змогли знайти ціле число.
Björn Hallström

Відповіді:


256

Для всіх, хто використовує Eclipse, саме так слід робити.

Затемнення -> імпорт -> існуючий код Android -> перегляд -> перехід до google-play-services_lib FOLDER (android-sdk / extras / google / google_play_services / libproject).

Потім, на ваш проект

натисніть клавішу управління -> властивості -> android -> бібліотеки, add -> виберіть проект, який ви щойно імпортували -> добре


Я спробував це (дотримуючись інструкцій з іншого питання, щоб знайти папку), але Eclipse каже, що він не може записати .projectфайл у вказаний google-play-services_libкаталог. Очевидно, що безпосередньою причиною є те, що Eclipse не може записатись у каталог програмних файлів, де розташований SDK, але більш конкретним питанням було б, чому потрібно змінювати .projectфайл (який, мабуть, належить до SDK і, таким чином, повинен бути "правильним"). на першому місці.
АБО Mapper

Я цього раніше не бачив, тому не знаю, як саме це виправити. Це на увазі, якщо явно вже не змінено, я не думаю, що помилка існує в папці. Можливо, він просто застарів і його потрібно повторно завантажити (навряд чи це буде проблемою, але ви ніколи не знаєте).
PSchuette

Чи виникла ця помилка під час спроби додати бібліотеку або при спробі імпорту проекту?
PSchuette

Подяка - працював для мене, на Eclipse. Я думав, що зробив це правильно, але повторно зробив це, і це вирішило проблему компілятора.
Анна Білстром

4
Папка, яку вам потрібно імпортувати, знаходиться тут: extras \ google \ google_play_services \ libproject
Kamil Szot

78

Зауважте, що це виправлення може стосуватися лише користувачів IntelliJ !! (Більше інформації внизу цієї публікації, яка має стосуватися всіх.)

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

Оскільки я цілком виправив це через графічний інтерфейс, і зовсім не за допомогою редагування будь-яких файлів, ось кілька скріншотів:

Крок 1 - Початкова структура проекту Тож моя структура проекту почала виглядати так ...

Крок 2 - Видалено бібліотеку служб google-play-services Потім я видалив google-play-servicesбібліотеку зі свого списку залежностей, вибравши її, а потім натиснувши кнопку мінус внизу. Зауважте помилку внизу діалогового вікна, оскільки мій проект абсолютно вимагає цієї бібліотеки. Але не хвилюйтесь, ми скоро його знову додамо!

Крок 3 - Додані google-play-сервіси як залежність від модуля Далі я додав 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). Це баночка файл містить тільки код, а НЕ значення 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!)
Su-Au Hwang

2
На додаток до цієї відповіді (конкретно для IntelliJ), якщо ви плануєте реально використовувати методи / класи бібліотек, вам доведеться перейти до Файл> Структура проекту> вибрати модуль google-play-services_lib> Залежності та встановити прапорець "Експортувати" для the google-play-services.jar
Su-Au Hwang

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

31

Я зіткнувся з тією ж проблемою, і, мабуть, Eclipse якось залишив version.xmlфайл у / res / значення з оригінального google-play-services_libпроекту, роблячи копію. Я витягнув файл з оригінального проекту і вставив його в свою копію проекту, і проблема виправлена.


Це рішення, яке також мене виправило, це неймовірний нагляд від Google, якщо ви запитаєте мене.
Анріке де Соуза

Спасибі товариш, це
вирішило

1
Це вирішило мою проблему. Чому імпорт затемнення пропустив цей файл? Якась підказка?
nizam.sp

24

Після імпорту бібліотеки 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 та додайте цей рядок до залежностей:

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

Тільки те, що його не знаходять: Помилка: виникла проблема з налаштуванням проекту ": app". > Не вдалося вирішити всі залежності для конфігурації ': 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
matteo

file: /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: додаток: не
вказано

Шлях, де він шукає бібліотеку, схоже, не відповідає розташуванню, де менеджер sdk фактично його завантажив, але навіть після створення символічного посилання проблема не виправлена. Я думаю, я не можу зрозуміти, який саме файл чи папку потрібно знайти. Будь-яка ідея?
Маттео

1
Щоб побачити, які у вас версії: "ls -1 $ ANDROID_HOME / extras / google / m2repository / com / google / android / gms / play-services". Щоб отримати новіші версії, запустіть менеджер SDK та оновіть потрібні компоненти. Не возиться із символічними посиланнями.
ТОВ «Софійське ПЗ»

12
  1. Встановіть "Служби Google Play" та "Репозиторій Google" з диспетчера SDK Android.
  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'
Pow366

це зробило це для мене. Ніхто не опублікував, як виглядав кінцевий результат розділу про залежності в build.gradle ..., що було б корисно
сніг16

10

З манжети відчувається, що ваш проект підключений до старішої версії проекту бібліотеки Play Services. Рекомендований Google підхід полягає в тому, щоб знайти проект бібліотеки в SDK і зробити локальну копію. Це означає, що щоразу, коли ви оновлюєте проект бібліотеки Служб Play через диспетчер SDK, вам також потрібно замінити свою копію на нову.


Так, я інтегрував бібліотеку у свій проект, розмістивши копію файлів, завантажених за допомогою диспетчера Android SDK, у свій робочий каталог. Також я оновив бібліотеку до цієї нової версії, зробивши саме те саме (скопіював файли з каталогу SDK Android і перезаписав існуючі в моєму проекті).
Чарльз Мадере


7

після оновлення до останньої версії у мене була ця проблема з усіма моїми проектами, але вона була вирішена, просто додавши ще раз посилання на бібліотеку:

якщо у вас немає бібліотеки до вашої робочої області в Eclipse, ви можете додати її за допомогою: File-> Import-> Existing Android Code Into Workspace-> переглядати та переходити до google-play-services_liblib проекту, ( android-sdk/extras/google/google_play_services/libproject).

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

потім видалення /binта /genпапки мого проекту (щось подібне до чистого варіанту) та створення мого проекту заново.


але це робить apk 5mb важчим
Siddharth

6

Вирішено за затемнення

Виконайте наступні дії:

  1. Імпортуйте папку google-play-services_lib як проект, використовуючи імпорт-> Існуючий Android-код у робочу область
  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 Services. Існує навіть випадаюче меню для перегляду інструкцій для 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-служб, яку ви завантажили на свій розробник.

Ви можете знайти номер версії версії play-служб, яку ви завантажили на свій розробник, заглянувши в папку \ sdk \ extras \ google \ m2repository \ com \ google \ android \ gms \ play-services, як пояснено тут : Як я можу співставити версію Служб Google Play із встановленою версією?


Нарешті хороша, зрозуміла відповідь для початківців Android. Цю відповідь слід поставити вище.
Джел

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 має бути "Google
  3. API "3-метадані повинні бути додані до файлу маніфесту.
  4. Цільовий пакет SDK для вашого проекту повинен становити 17, якщо ви повністю не оновились до 19, оскільки в деяких випадках 19 не працює добре.

1

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

У своєму випадку я змусив оновити файли Maven POM, і це вирішило проблему.


1

У моєму випадку мені потрібно було скопіювати папку google-play-services_lib у той самий ДРІВ вихідних кодів моїх додатків

  • F: \ Продукти \ Android \ APP * .java <- Мої програми тут, тому я скопіював у папку нижче
  • F: \ Продукти \ Android \ libs \ google-play-services_lib

1

Якщо ви не використовуєте IDE, а використовуєте збірки командного рядка (використовуючи ant та ndk-build), це вирішити:

Встановіть всі req'd частини за допомогою команди "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).
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

0

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

Я використовую інструменти платформи Android SDK версії 17 (не 19) та інструменти Android SDK версії 22.0.1



0

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

  • 1.Додайте файли до тієї ж робочої області, після чого видаліть бібліотеку.
  • 2.Повторне затемнення
  • 3.Додайте проект бібліотеки ще раз
  • 4.Очистити

0

Google пропонує не створювати проект безпосередньо з каталогу SDK. Краще скопіювати проект lib до місця, де знаходиться ваш додаток, а потім імпортувати його звідти. Інакше наступного разу, коли ви перейдете на імпорт проекту для іншого додатка, він уже буде використовуватися.

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

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


0

Усі, хто шукає в 2017 році версії 10.0.1 ігрових служб, потребує імпорту play-services-basement(використовуйте для входу play-services-base).


Не могли б ви пояснити трохи більше? Як я бачу поточні залежності та як додати більше?
Хасан Гульзар

Я все це робив вручну та шляхом спроб та помилок, коли писав цю відповідь. Використання градуля значно полегшило.
goobliata

0

Android Studio 3.3.2 під Windows 10

Файл -> Недійсний кеш / Перезапуск та виберіть 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.