Android Studio con servicios de Google Play

95

Estoy intentando probar los servicios de Google Play con el nuevo Android Studio. Tengo un proyecto que depende de google_play_services.jar. Pero cuando trato de reconstruir el proyecto, obtengo los siguientes errores:

Information:[TstGP3-TstGP3] Crunching PNG Files in source dir: C:\Users\ans\AndroidStudioProjects\TstGP3\TstGP3\src\main\res
Information:[TstGP3-TstGP3] To destination dir: C:\Users\ans\AndroidStudioProjects\TstGP3\build\classes\res-cache\TstGP3-TstGP3
Information:Compilation completed with 2 errors and 0 warnings in 2 sec
Information:2 errors
Information:0 warnings
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\Android_BuildConfig_Generator\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\BuildConfig.java
    Error:Error:line (4)error: duplicate class: com.example.tstgp3.BuildConfig
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\aapt\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\R.java
    Error:Error:line (10)error: duplicate class: com.example.tstgp3.R

Parece que tiene dos archivos BuildConfig y también dos clases R. ¿Cómo puedo resolver el problema?

EDITAR:

He notado que el compilador compila dos archivos R.java: el que está en la carpeta de mi proyecto y otro que se encuentra en la carpeta% USERPROFILE% .AndroidStudioPreview Entonces, traté de excluir esta carpeta "Vista previa" en la configuración del compilador. y ahora está funcionando. Este problema solo ocurre después de haber comenzado a usar las clases de Google Play Services en mi proyecto. Apreciaré si alguien puede explicar la razón detrás de este problema.

androidtester
fuente
Cualquiera puede ayudar en lo que hace esta compilación 'com.google.android.gms: play-services: 6.5.87' mientras se agrega a la sección de dependencias en Android Studio. También podemos agregar el frasco, pero lo que hace la línea anterior ya que no estamos agregando frascos.
Android Killer

Respuestas:

243

Todas esas respuestas son incorrectas, desde el lanzamiento del complemento gradle v0.4.2, la configuración de los servicios de Google Play en Android Studio es sencilla. No es necesario importar ningún jar o agregar ninguna biblioteca de proyectos ni agregar ningún módulo nuevo en Android Studio. Lo que tiene que hacer es agregar las dependencias correctas en el archivo build.gradle. Eche un vistazo a esos enlaces: actualización del complemento Gradle v0.4.2 , nuevo sistema de compilación y esta muestra

La forma correcta de hacerlo es la siguiente:

En primer lugar, debe iniciar el administrador sdk y descargar e instalar los siguientes archivos ubicados en "extras": repositorio de soporte de Android , servicios de Google Play , repositorio de Google .

Reinicie Android Studio y abra el archivo build gradle. Debe modificar su archivo build.gradle para que se vea así en las dependencias:

dependencies {
    compile 'com.google.android.gms:play-services:6.5.87' 
 }

Y finalmente sincronice su proyecto (el botón a la izquierda del administrador de AVD).

Desde la versión 6.5 puedes incluir la biblioteca completa (muy grande) o solo los módulos que necesitas (Mejor Opción). Es decir, si solo necesitas Google Maps and Analytics puedes sustituir el ejemplo anterior por el siguiente:

dependencies {  
    compile 'com.google.android.gms:play-services-base:6.5.87'    
    compile 'com.google.android.gms:play-services-maps:6.5.87'  
}

Puede encontrar la lista de dependencias completa aquí

Algunas notas al margen:

  • Utilice la última versión de la biblioteca de servicios de juego. Si es una versión antigua, Android Studio la resaltará. A partir de hoy (el 5 de febrero es 6.5.87), pero puede consultar la última versión en Gradle.
  • Después de una actualización importante de Android Studio, limpie y reconstruya su proyecto siguiendo las siguientes instrucciones como se sugiere en los comentarios de @ user123321

    cd a la carpeta de su proyecto
    ./gradlew clean
    ./gradlew build

Imanol
fuente
hola Estornino. También vi esta actualización, pero me preguntaba cómo Android Studio (al menos el IDE en sí) capta las dependencias. ¿Lograste funcionar solo con la configuración de Gradle?
victor n.
sí, funcionó para mí. el IDE también puede resolver los nuevos nombres. Gracias.
victor n.
Lo siento por la respuesta tardía. Cuando presiona el botón sincronizar, el ide agrega las nuevas dependencias automáticamente. Es el sistema de construcción quien gobierna el comportamiento de ide y no se recomienda hacer cambios en el proyecto en el estilo de idea "antiguo" (me refiero a cambiar los módulos y la configuración del proyecto). Me alegro de que esté funcionando para ti.
Imanol
5
Asegúrese de ./gradlew clean y luego ./gradlew build antes de que android studio 2.x recoja la dependencia. De lo contrario, obtendrá un error
NoClassDef
2
A partir de hoy, la última compilación que obtuve fue la 5.2.08
chrisbjr
114
  1. Vaya a Archivo -> Estructura del proyecto
  2. Seleccione 'Configuración del proyecto'
  3. Seleccione la pestaña 'Dependencias'
  4. Haga clic en '+' y seleccione '1.Dependencias de la biblioteca'
  5. Busque: com.google.android.gms: play-services
  6. Seleccione la última versión y haga clic en 'Aceptar'

¡Voila! No es necesario pelear con Gradle :)

Ivo Stoyanov
fuente
5
Esto funcionó para mí y es muy fácil. Ya conoce el número de versión más reciente de los servicios de reproducción: ¡simplemente selecciónelo de una lista y el archivo gradle se modificará para usted!
Nick Perkins
¿Puedo usar el mismo método para importar BaseGameUtils para la tabla de clasificación?
ing
Sí, Ahmed. De esta forma puedes importar cualquier biblioteca de Android.
Ivo Stoyanov
Soluciones simples y elegantes. Gracias @IvoStoyanov, ahorrará mucho tiempo a principiantes como yo.
Manikandan S
5

EDITADO: Este chico realmente lo trajo a casa y tiene un pequeño tutorial http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

una nota al margen: había jugado tanto que necesitaba hacer una gradlew cleanpara que funcionara con éxito

Si ha importado su proyecto o está trabajando desde la aplicación Sample Maps ubicada en \ extras \ google \ google_play_services \ samples \ maps, consulte este tutorial.

https://stackoverflow.com/a/16598478/2414698

Si está creando un nuevo proyecto desde cero, tenga en cuenta los comentarios de Xav en esa misma publicación. Describe que Android Studio usa un compilador diferente y que debe modificar el archivo build.gradle manualmente. Hice esto con éxito. Yo copié

  • google-play-services.jar
  • google-play-services.jar.properties

en mi directorio lib y agregué lo siguiente a mi archivo build.gradle

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/google-play-services.jar')
}

Además, si se trata de un proyecto nuevo , consulte también esta publicación.

https://stackoverflow.com/a/16671865/2414698

programador
fuente
7
El artículo al que enlaza ahora está obsoleto. No se recomienda esta solución.
RevNoah
4

La mayoría de estas respuestas solo abordan dependencias en tiempo de compilación, pero encontrará una gran cantidad de excepciones NoClassDef en tiempo de ejecución. Eso es porque necesita más que google-play-services.jar. Hace referencia a recursos que forman parte del proyecto de la biblioteca y no se incluyen correctamente si solo tiene el jar.

Lo que funcionó mejor para mí fue configurar primero el proyecto correctamente en eclipse. Organice su proyecto de modo que incluya tanto su aplicación como la biblioteca, como se describe aquí: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

Luego, exporte el proyecto de su aplicación desde eclipse e impórtelo a Android Studio como se describe aquí: http://developer.android.com/sdk/installing/migrate.html . Asegúrese de exportar tanto el proyecto de su aplicación como el proyecto de la biblioteca de servicios de Google Play. Al importar, detectará el proyecto de la biblioteca y lo importará como módulo. Acepté todos los valores predeterminados durante el proceso de importación del proyecto.

Brad Armstrong
fuente
2
¡Gracias, pero no quiero usar eclipse!
androidtester
2

Integración de servicios de Google Play en Android Studio.

Paso 1:

SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

Paso 2:

chance in build.gradle 
defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.0.+'
}

Paso 3:

 android.manifest.xml
<uses-sdk
        android:minSdkVersion="8" />

Paso 4:

Sync project file with grandle.
wait for few minute.

Paso 5:

File->Project Structure find error with red bulb images,click on go to add dependencies select your app module.
Save

Por favor, haga un comentario si necesita ayuda. Codificación feliz.

Harshid
fuente
2

Ninguna de las soluciones anteriores funcionó para mí. No estoy seguro de si es específico de mi configuración o de una nueva versión.

Estoy usando Android Studio Beta 0.8.9 y no recibí ningún com.google.android.gms: play-service en la lista de la biblioteca siguiendo estas instrucciones:

Vaya a Archivo -> Estructura del proyecto -> Seleccionar configuración del proyecto -> Seleccione la pestaña 'Dependencias' Haga clic en '+' -> 1.Dependencias de la biblioteca -> Seleccione com.google.android.gms: play-services: +

Ya había hecho esto:

En primer lugar, debe ejecutar el administrador de SDK y descargar e instalar los siguientes archivos ubicados en "extras": repositorio de soporte de Android, servicios de Google Play, repositorio de Google.

Lo que resolvió fue agregar desde SDK Manager, "Servicios de Google Play para Froyo" y luego repetir el primer paso.

No entendí la razón correctamente, pero funcionó.

PD: Acabo de observar que incluso ahora, cuando busco servicios de juego, esto no aparece, pero cuando me desplazo directamente y miro la lista, está allí.

Selfx Aadhyant
fuente
2

Siga este artículo -> http://developer.android.com/google/play-services/setup.html

Debe elegir Usar Android Studio

ingrese la descripción de la imagen aquí

Ejemplo de archivo Gradle:

Nota: Abra el archivo build.gradle dentro del directorio del módulo de su aplicación.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "{applicationId}"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.google.android.gms:play-services:6.1.+'
}

Puede encontrar la última versión de Google Play Services aquí: https://developer.android.com/google/play-services/index.html

d.danailov
fuente
1

Lo tengo funcionando después de hacer lo siguiente:

  • Tenga google-play-services-lib como módulo (observe la diferencia entre módulo y proyecto), luego agregue google-play-services.jar al directorio "libs" de sus modelos.
  • Después de eso, agregue el jar a su ruta de compilación haciendo una biblioteca o agregue el jar a otra biblioteca. Por lo general, tengo una sola biblioteca IDEA a la que agrego todos mis archivos /libs/*.jar.
  • Agregue la biblioteca a la ruta de construcción de sus módulos a través de Configuración del módulo (F4).
  • Agrega google-play-services-lib como una dependencia de módulo a tu proyecto.
  • ¡Hecho!

Nota: Esto tampoco me da las excepciones de tiempo de ejecución, funciona.

Johan S
fuente
Recibo los mismos errores: R.java y BuildConfig.java están duplicados
androidtester
¿Tiene el módulo como dependencia de compilación?
Johan S
¡Si! La única solución es la que he mencionado antes (excluir la carpeta Vista previa)
androidtester
0

Abra el archivo build.gradle de su proyecto y agregue la línea debajo del módulo de dependencias.

dependencies {
    compile 'com.google.android.gms:play-services:7.0.0'
}

Lo siguiente será agregar Google Analytics y Maps si no desea integrar la biblioteca completa

dependencies {
    compile 'com.google.android.gms:play-services-analytics:7.0.0'
    compile 'com.google.android.gms:play-services-maps:7.0.0'
}
Pankaj
fuente
0

En mi caso, google-play-services_lib se integra como módulo (bibliotecas externas) para Google map y GCM en mi proyecto.

Ahora, este tiempo requiere implementar la API de Autocompletar de Google Places, pero el problema es que el código es nuevo y mis bibliotecas son viejas, por lo que no se encontró alguna clase:

siguiendo estos pasos ...

1> Actualice el servicio Google Play en SDK Manager

2> seleccione el nuevo archivo .jar del servicio de Google Play ( Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs ) reemplace con el anterior

conseguí el éxito ... !!!

Dhruv Raval
fuente
-3

Copié los archivos de play libs de google-play-services_lib al directorio de libs de mi proyecto:

  • google-play-services.jar
  • google-play-services.jar.properties.

Luego los seleccionó, haga clic con el botón derecho, "Agregar como bibliotecas".

por favor bórrame
fuente
1
Gracias por tu respuesta, pero no funcionó para mí, es similar a algo que había probado antes.
androidtester
Este consejo va en contra de otra información que he leído en otros lugares. La respuesta vinculada en la primera respuesta ha quedado obsoleta porque utiliza este método.
RevNoah