Actualización de la Biblioteca de servicios de Google Play y falta el símbolo @ integer / google_play_services_version

186

Al actualizar mi proyecto a la última versión de Google Play Services ( v4.0, lanzado en Halloween 2013 ), ahora se supone que debe agregar una nueva etiqueta al AndroidManifest.xmlarchivo.

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

Desafortunadamente, cuando trato de hacer eso, aparece este error de compilación:

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').

Luego puedo navegar al archivo en google-play-services_lib/res/values/version.xmly ver el entero sin formato para ese símbolo:

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

Y luego insertarlo de nuevo en mi AndroidManifest.xml:

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

Hacer esto funciona absolutamente bien y luego puedo compilar y ejecutar el proyecto y la aplicación muy bien. Pero definitivamente es una solución indeseable con problemas obvios de actualización.

¿Algunas ideas?

Charles Madere
fuente
tiene exactamente el mismo problema en este momento, pero no pudo encontrar el número entero.
Björn Hallström

Respuestas:

256

Para todos los que usan Eclipse, así es como debe hacerlo.

Eclipse -> importar -> código de Android existente -> navegar -> navegar a CARPETA google-play-services_lib (android-sdk / extras / google / google_play_services / libproject).

Entonces, en tu proyecto

haga clic en control -> propiedades -> android -> bibliotecas, agregue -> seleccione el proyecto que acaba de importar -> ok

PSchuette
fuente
He intentado esto (siguiendo las instrucciones de esa otra pregunta para localizar la carpeta), pero Eclipse dice que no puede escribir el .projectarchivo en el google-play-services_libdirectorio indicado . Obviamente, la razón inmediata es que Eclipse no puede escribir en el directorio Archivos de programa, donde se encuentra el SDK, pero la pregunta más concreta sería por qué es necesario modificar el .projectarchivo (que aparentemente pertenece al SDK y, por lo tanto, debería ser "correcto") en primer lugar.
O Mapper
No he visto esto antes, así que no sé exactamente cómo solucionarlo. Eso en mente, a menos que ya se haya modificado explícitamente, no creo que el error exista dentro de la carpeta. Es posible que simplemente esté desactualizado y deba volver a descargarse (es poco probable que también sea el problema, pero nunca se sabe).
PSchuette
¿Experimentó este error al intentar agregar la biblioteca o al intentar importar el proyecto?
PSchuette
Gracias, funcionó para mí, en Eclipse. Pensé que lo había hecho bien, pero lo volví a hacer y eso solucionó el problema del compilador.
Anna Billstrom
44
La CARPETA que necesita importar está aquí: extras \ google \ google_play_services \ libproject
Kamil Szot
78

¡Tenga en cuenta que esta solución solo puede aplicarse a los usuarios de IntelliJ! (Más información al final de esta publicación que debería aplicarse a todos).

Solucionado este problema! Uso IntelliJ y resulta que había configurado mal la forma en que estaba incluyendo el google-play-services_libmódulo como una dependencia.

Como arreglé esto completamente a través de la GUI y no edité ningún archivo, aquí hay un par de capturas de pantalla:

Paso 1 - Estructura inicial del proyecto Así que mi Estructura de Proyecto comenzó luciendo así ...

Paso 2: se eliminó la biblioteca de google-play-services Luego eliminé la google-play-servicesbiblioteca de mi lista de dependencias seleccionándola y luego haciendo clic en el botón menos en la parte inferior. Observe el error en la parte inferior del cuadro de diálogo, ya que mi proyecto requiere absolutamente esta biblioteca. Pero no se preocupe, ¡lo volveremos a agregar pronto!

Paso 3: se agregaron google-play-services como una dependencia del módulo A continuación, agregué google-play-services_libcomo una dependencia de módulo en lugar de una dependencia de biblioteca. Luego presioné el botón de flecha hacia arriba en la parte inferior un par de veces para mover esta dependencia al principio de la lista. Pero observe el error en la parte inferior (¡todavía no hemos terminado!)

Paso 4: haz clic en la bombilla para agregar la biblioteca de servicios de Google Play como una dependencia Luego hice clic en la bombilla en la parte inferior del cuadro de diálogo en el área de mensaje de error para que aparezca esta pequeña ventana emergente que ofrece dos opciones ( Agregar a las dependencias ... o Eliminar biblioteca ). Haga clic en la opción Agregar a las dependencias ...

Paso 5: agrega la biblioteca al módulo google-play-services_lib Debería haber aparecido una nueva ventana de diálogo pequeña. Me dio dos opciones, una para mi proyecto principal (su nombre está borroso) y luego otra para el google-play-services_libproyecto. El tuyo puede tener muchos más dependiendo de tu proyecto (como puedes ver actionbarsherlock, cosas así). ¡Seleccione google-play-services_liby haga clic en Aceptar!

Y finalmente, ¡has terminado! ¡Espero que esto ayude a alguien más!

Informacion adicional

Creo que la razón por la que este problema estaba sucediendo al principio es porque pensé que había incluido correctamente todo el google-play-services_libproyecto en mi proyecto general ... pero en realidad no lo había hecho, y en su lugar solo había incluido correctamente su archivo jar ( google-play-services_lib/libs/google-play-services.jar). Ese archivo jar solo incluye código, no valores de recursos de Android, por lo que el @integer/google_play_services_versionvalor nunca estuvo realmente en mi proyecto. Pero el código se pudo usar en mi proyecto, y eso hizo que pareciera que todo estaba bien.

Y como nota al margen, solucionar este problema también parece haber solucionado el GooglePlayServicesUtil.getErrorDialog(...).show()bloqueo que solía tener. Pero eso también podría haber sido solucionado por la actualización, no realmente 100% seguro allí.

Charles Madere
fuente
2
No funciona para mi No tengo la "bombilla en la parte inferior del cuadro de diálogo en el área de mensaje de error para que aparezca esta pequeña ventana emergente que da dos opciones"
Vadorequest
2
En su caso, tal vez intente eliminar completamente los Servicios de Google Play de su proyecto y luego volver a importarlos. Como este problema de enteros faltantes solo ocurre si los Servicios de Google Play se importan incorrectamente en primer lugar, puede ser una buena idea comenzar desde cero.
Charles Madere
1
@Vadorequest también puede seleccionar el módulo google-play-services-lib y agregar el archivo google-play-services.jar como una dependencia del módulo (! Al módulo google-play-services-lib!)
Su-Au Hwang
2
Además de esta respuesta (específica de IntelliJ), si planea utilizar los métodos / clases de las bibliotecas, deberá ir a Archivo> Estructura del proyecto> seleccionar el módulo google-play-services_lib> Dependencias y marcar "Exportado" para the google-play-services.jar
Su-Au Hwang
2
Resumen: agregue el directorio libproject como módulo y conviértalo en una dependencia de su proyecto principal para obtener el valor entero del directorio
libproject
31

Me enfrenté al mismo problema, y ​​aparentemente Eclipse de alguna manera dejó el version.xmlarchivo en / res / valores del google-play-services_libproyecto original mientras hacía una copia. Saqué el archivo del proyecto original y lo pegué en mi copia del proyecto y el problema está solucionado.

Atul Goyal
fuente
Esta fue la solución que también me solucionó, es una supervisión increíble por parte de Google si me preguntas.
Henrique de Sousa
Gracias amigo, esto solucionó mi problema
Fabii
1
Esto solucionó mi problema. ¿Por qué la importación de eclipse omitió este archivo? ¿Cualquier pista?
nizam.sp
24

En Eclipse, después de importar la biblioteca de Google Play al espacio de trabajo del proyecto, acabo de copiar el archivo version.xml de

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

a

MyProjectName/res/values/version.xml
Darragh O'Keeffe
fuente
3
Hacer esto funcionará, pero el problema es que hace que la actualización a una versión más nueva de la biblioteca de Google Play Services sea un poco más molesta. Probablemente tendrá que reemplazar el version.xmlarchivo con cada actualización.
Charles Madere
20

Para cualquiera que use gradle: no incluya la fuente del proyecto, sino que descárguelo usando SDK Manager y agregue esta línea a las dependencias:

compile 'com.google.android.gms:play-services:4.0.30'
Sofi Software LLC
fuente
Solo que no lo encuentra: Error: Se produjo un problema al configurar el proyecto ': aplicación'. > No se pudieron resolver todas las dependencias para la configuración ': aplicación: _debugCompile'. > No se pudo encontrar ninguna versión que coincida con com.google.android.gms: play-services: 6.1. +. Busqué en las siguientes ubicaciones: jcenter.bintray.com/com/google/android/gms/play-services/… jcenter.bintray.com/com/google/android/gms/play-services
matteo
archivo: /home/teo/Documents/programmi/android-studio-new/sdk/extras/android/m2repository/com/google/android/gms/play-services/maven-metadata.xml archivo: / home / teo / Documents / programmi / android-studio-new / sdk / extras / android / m2repository / com / google / android / gms / play-services / Requerido por: xxxxxxx: aplicación: sin especificar
matteo
La ruta donde busca la biblioteca parece no coincidir con la ubicación donde el administrador de SDK realmente la ha descargado, pero incluso después de crear un enlace simbólico, el problema no se soluciona. Supongo que no puedo averiguar qué archivo o carpeta necesita encontrar exactamente. ¿Alguna idea?
matteo
1
Para ver qué versiones tiene: "ls -1 $ ANDROID_HOME / extras / google / m2repository / com / google / android / gms / play-services". Para obtener versiones más recientes, ejecute SDK Manager y actualice los componentes que desee. No te metas con los enlaces simbólicos.
Sofi Software LLC
12
  1. Instale "Google Play Services" y "Google Repository" desde Android SDK Manager.
  2. Agrega la línea compile 'com.google.android.gms:play-services:4.1.32@aar'a tu build.gradle.
  3. Como resultado, el recurso @integer/google_play_services_versionestará disponible.
Andrey Grebnev
fuente
1
Agregué esta compilación 'com.google.android.gms: play-services: 4.4.52'
powder366
Esto lo hizo por mí. Nadie publicó cómo se veía el resultado final de la sección de dependencias en build.gradle ... eso habría sido útil
snowking16
10

De repente, parece que su proyecto está conectado a una versión anterior del proyecto de biblioteca de Play Services. El enfoque recomendado, por Google, es que encuentre el proyecto de la biblioteca en el SDK y haga una copia local. Sin embargo, esto significa que cada vez que actualice el proyecto de la biblioteca de Play Services a través del Administrador de SDK, también debe reemplazar su copia con una copia nueva.

CommonsWare
fuente
Sí, integré la biblioteca en mi proyecto colocando una copia de los archivos descargados con Android SDK Manager en mi directorio de trabajo. También actualicé la biblioteca a esta nueva versión haciendo lo mismo (copié los archivos del directorio del SDK de Android y sobrescribí los existentes en mi proyecto).
Charles Madere
7

después de la actualización de la última versión tuve este problema con todos mis proyectos, pero se resolvió simplemente agregando nuevamente la referencia de la biblioteca:

si no tiene la biblioteca en su espacio de trabajo en Eclipse, puede agregarla con: File-> Import-> Existing Android Code Into Workspace-> navegar y navegar hasta el google-play-services_libproyecto lib, ( android-sdk/extras/google/google_play_services/libproject).

ingrese la descripción de la imagen aquí

luego borrando /biny /gencarpetas de mi proyecto (algo similar a la opción de limpieza) y construyendo mi proyecto nuevamente.

Jorgesys
fuente
pero esto hace que el apk 5mb sea más pesado
Siddharth
6

Resuelto para Eclipse

Sigue los siguientes pasos:

  1. Importe la carpeta google-play-services_lib como proyecto, utilizando import-> Código de Android existente en el espacio de trabajo
  2. Desde las propiedades del proyecto, seleccione la sección Android, en la parte inferior. En la sección Biblioteca, haga clic en Agregar y seleccione google-play-services_lib y Aplicar. Siga el enlace http://i.stack.imgur.com/opSeJ.png para ver la captura de pantalla.
Riccardo Pittiglio
fuente
Mi google-play-services_libestaba enF:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
Daniel Bonetti
5

El sitio para desarrolladores de Android de Google tiene instrucciones sobre cómo "Agregar servicios de Google Play a su proyecto", y también son relevantes sobre cómo actualizar la versión de Play Services. Incluso hay un menú desplegable para ver instrucciones para Eclipse, Android Studio o "Algo más". Ese sería el mejor lugar para ver las instrucciones en caso de que cambien. La página está aquí:

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

Pero como la mayoría de las respuestas aquí son para Eclipse, aquí hay un breve resumen para actualizar Play Services con Android Studio

  1. Abra el archivo build.gradle dentro del directorio del módulo de la aplicación. Nota: Los proyectos de Android Studio contienen un archivo build.gradle de nivel superior y un archivo build.gradle para cada módulo. Asegúrese de editar el archivo para su módulo de aplicación.
  2. Actualice la regla de compilación en "dependencias" para consultar la versión de play-services que ha descargado en su máquina de desarrollo.

Puede encontrar el número de versión para la versión de play-services que ha descargado en su máquina de desarrollo buscando en su carpeta \ sdk \ extras \ google \ m2repository \ com \ google \ android \ gms \ play-services, como se explica aquí : ¿Cómo hago coincidir una revisión de Google Play Services con una versión de instalación?

Eric Barr
fuente
Finalmente una buena y clara respuesta para principiantes de Android. Esta respuesta debe colocarse más arriba.
Jelle
4

Para Eclipse, acabo de agregar una referencia de proyecto a google-play-services_lib en:

Propiedades-Android En el panel Biblioteca (panel inferior), asegúrese de que google-play-services_lib esté en la lista. De lo contrario, haga clic en el botón Agregar ... y seleccione google-play-services_lib.

hNdroid
fuente
3

Tuve el mismo problema, el archivo version.xml no estaba en google-play-services_lib. Simplemente inicie su administrador de SDK y acepte la actualización, especialmente las cosas relacionadas con "extras".

usuario2167877
fuente
2

Al importar google-play-services_lib, verifique el código de versión definido en AndroidManifest.xml y version.xml. Encontré la diferencia en el código de versión y lo cambié a 4242000 . Después de realizar el cambio, no hay más errores de compilación en @ integer / google_play_services_version .ingrese la descripción de la imagen aquí

Shanki Bansal
fuente
2
Esta no es una buena forma de hacerlo. Deberá actualizar manualmente cada vez que actualice los Servicios de Google Play.
PSchuette
2

Solucionado agregando Google Play Services a mi Módulo: archivo de compilación de gradle de aplicaciones La documentación también dice que actualice la versión cuando actualice GMS.

dependencies {

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

} 
Hugh Brady
fuente
1

A continuación se detallan las acciones principales que evitarán muchos errores al utilizar el servicio de Google Play Lib:

  1. Asegúrese de copiar el proyecto lib al espacio de trabajo de proyectos Eclipse.
  2. El SDK de destino para el proyecto lib del servicio Google play debe ser "Google
  3. API "3- Se deben agregar metadatos al archivo de manifiesto.
  4. El SDK de destino de su proyecto debe ser 17 a menos que haya actualizado completamente a 19, porque en algunos casos 19 no funciona bien.
Ayman Al-Absi
fuente
1

Tuve el mismo problema con un proyecto con Maven e IntelliJ. Los servicios de Google Play se agregan como una dependencia de Maven. La construcción maven funcionó bien desde la línea de comandos, pero IntelliJ se quejó de este símbolo que faltaba@integer/google_play_services_version

En mi caso, forcé una actualización de los archivos POM de maven y resolvió el problema.

Pierre Henry
fuente
1

En mi caso, necesitaba copiar la CARPETA google-play-services_lib en la misma UNIDAD de los códigos fuente de mis aplicaciones

  • F: \ Products \ Android \ APP * .java <- Mis aplicaciones están aquí, así que copié en la carpeta a continuación
  • F: \ Productos \ Android \ libs \ google-play-services_lib
fedmich
fuente
1

Cuando no usa un IDE, pero usa compilaciones de línea de comando (usando ant y ndk-build), esta es la forma de resolverlo:

Instale todas las partes requeridas con el comando 'android'. Luego tenga una copia de google-play-service_lib / en la raíz de su proyecto. Edite project.properties para incluir esta línea:

android.library.reference.1=./google-play-services_lib
Bram
fuente
Pero es necesario android update project -p . -t android-22en google-play-services_libprimer lugar. De manera equivalente, agregue <property name="android.library.reference.1" value="./google-play-services_lib"/>a su build.xml(minimicé mi build.xmly abandoné el .properties).
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
0

Tuve el mismo problema. El problema era que "google-play-services.jar" no se importó correctamente a mi proyecto a pesar de que formaba parte del proyecto google_play_service_lib. Si está utilizando Eclipse, verifique si puede ver el archivo jar de servicios de reproducción en la sección Bibliotecas privadas de Android y si la biblioteca lo exporta.

Estoy usando las herramientas de la plataforma Android SDK versión 17 (no 19) y las herramientas Android SDK versión 22.0.1

Punit Raizada
fuente
0

Acabo de actualizar los servicios de Google Play en la carpeta Extras en Android SDK Manager

KarenAnne
fuente
0

El problema para mí era que el proyecto de la biblioteca y el proyecto que usaba servicios de reproducción estaban en directorios diferentes. Por lo que sólo:

  • 1.Agregue los archivos al mismo espacio de trabajo y luego elimine la biblioteca.
  • 2. Reiniciar eclipse
  • 3.Agregue el proyecto de biblioteca nuevamente
  • 4 claro
makkasi
fuente
0

Google sugiere que no cree un proyecto directamente desde el directorio SDK. Es mejor copiar el proyecto lib a la ubicación donde está su aplicación, luego importarlo desde allí. De lo contrario, la próxima vez que vaya a importar el proyecto para otra aplicación, ya estará en uso.

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

Nota: Debe hacer referencia a una copia de la biblioteca que copió en su espacio de trabajo de desarrollo; no debe hacer referencia a la biblioteca directamente desde el directorio del SDK de Android.

Shygar
fuente
0

Cualquiera que busque en 2017, la versión 10.0.1 de los servicios de reproducción requiere importación play-services-basement( solía estar en play-services-base).

goobliata
fuente
¿Podrías explicarme un poco más? ¿Cómo veo las dependencias actuales y cómo agregar más?
Hassan Gulzar
Lo hice todo manualmente y por prueba y error cuando escribí esta respuesta. Usar gradle hizo las cosas mucho más fáciles.
goobliata
0

Android Studio 3.3.2 en Windows 10

Archivo -> Invalidar cachés / reiniciar y elegir el invalidate and Restartbotón en el cuadro de diálogo apareció.

está ausente
fuente
0

Tuve el mismo problema, agregue esta línea 2 en su build.gradle, el problema se resolverá probablemente. ;)

dependencies {  
  implementation 'com.google.android.gms:play-services:12.0.1'  
  implementation 'com.google.android.gms:play-services-vision:10.0.0'    
}
Amin Najafloo
fuente