Código de ejemplo de Google Play, Drive API en IntelliJ

Estoy siguiendo el inicio rápido de Google Drive en las instrucciones de Android y lo tengo trabajando en Eclipse / Kepler. (Juno es simplemente desagradable.) Sin embargo, estoy mucho más familiarizado con IntelliJ, por lo que estoy tratando de averiguar cómo instalar estas API allí de una manera correspondiente.

Creo que me estoy desperdiciando en la parte de Drive API. El complemento Eclipse instala Drive de alguna manera o lugar especial. He añadido Google-api-services-drive-v2-rev63-1.14.1-beta.jar como una biblioteca, igual que los demás (Google-play-services y api_java_client). Pero cuando ejecuto la aplicación vuelve con

java.lang.NoClassDefFoundError: com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential 

Y también he conseguido un NoClassDefFoundError que tiene que ver con Drive $ Builder.

En IntelliJ los ámbitos .jar se establecen en "Compilar", excepto en las bibliotecas api_java_client que se establecen en "Proporcionado". Ninguno de ellos tiene "Exportar" marcado.

Editar: agregó el módulo y la dependencia. Ahora tengo un error diferente:

 04-07 00:39:59.766: ERROR/AndroidRuntime(10697): FATAL EXCEPTION: main java.lang.NoClassDefFoundError: com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential at com.fallinghawks.weight4.App.onCreate(App.java:15) 

App.java:15 es

 credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE); 

Puedo encontrar la clase que está pidiendo ….

Edición 2, después de agregar bibliotecas por las instrucciones de CrazyCoder: Compila, se ejecuta, pero obtengo el siguiente error. Estoy seguro de que me perdí haciendo algo exactamente bien, lo intentaré de nuevo en un minuto, pero mientras tanto el error es:

 04-10 18:02:35.120: ERROR/AndroidRuntime(740): FATAL EXCEPTION: main java.lang.ExceptionInInitializerError at com.google.api.services.drive.Drive$Builder.build(Drive.java:7301) at com.example.DriveQuickstart.MyActivity.getDriveService(MyActivity.java:110) at com.example.DriveQuickstart.MyActivity.onActivityResult(MyActivity.java:49) at android.app.Activity.dispatchActivityResult(Activity.java:5293) at android.app.ActivityThread.deliverResults(ActivityThread.java:3315) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362) at android.app.ActivityThread.access$1100(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5041) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NoClassDefFoundError: com.google.common.base.Preconditions at com.google.api.services.drive.Drive.<clinit>(Drive.java:63) 

(Esperemos que la edición final): Sí, me perdí algo y la bestia está funcionando! ¡¡Muchas gracias!!
Ahora puedo usar IntelliJ de nuevo para trabajar en mi proyecto "real" … sooooo mucho mejor 🙂

Seguí adelante y creé el proyecto IntelliJ IDEA desde cero, pasé unos 15 minutos, funciona bien.

  1. Descargue la biblioteca y las dependencias de Drive API v2 .

  2. Desempaquete en algún lugar, abra readme.html , pasar un par de minutos leyendo para entender qué frascos son necesarios.

  3. Cree un nuevo proyecto de aplicación de Android en IDEA utilizando un asistente con el paquete MainActivity y MainActivity . Utilice Android 4.2.2 API de Google como plataforma.

  4. Copie los frascos siguientes de la biblioteca de Drive API descargada en la carpeta libs del proyecto (debería haber aprendido qué jarras usar desde el paso 2):

    • google-api-client-1.14.1-beta.jar
    • google-api-client-android-1.14.1-beta.jar
    • google-http-client-1.14.1-beta.jar
    • google-http-client-android-1.14.1-beta.jar
    • google-http-client-gson-1.14.1-beta.jar
    • google-oauth-client-1.14.1-beta.jar
    • gson-2.1.jar
    • jsr305-1.3.9.jar
    • google-api-services-drive-v2-rev65-1.14.1-beta.jar
  5. Configure una biblioteca de proyectos de estos frascos. Puede hacerse seleccionando los frascos en la vista del proyecto, haga clic con el botón derecho, Agregar como biblioteca … , añada esta biblioteca a las dependencias de su módulo principal.

  6. File | Import Module , navegue a ANDROID_SDK\extras\google\google_play_services\libproject\google-play-services_‌​lib , desde los orígenes existentes.

  7. Añada google-play-services.jar a las dependencias del módulo importado, habilite la casilla de verificación Exportar , debería verse así .

  8. Agregue el módulo creado en el paso 6 a las dependencias de su módulo de aplicación principal .

  9. Copie el código de ejemplo de MainActivity desde el inicio rápido , el paso 4 en el archivo MainActivity.java que reemplaza el código antiguo, edite AndroidManifest.xml también por la guía.

  10. Construir, ejecutar en el emulador o en el dispositivo para probar (no se olvide de los pasos 1-2 del Inicio rápido ).


O simplemente puede descargar y utilizar la muestra completamente aislada que he creado siguiendo los pasos anteriores (el módulo del paso 6 está incluido en el proyecto).

Falló para mí en el emulador debido a algún error de la aplicación de la cámara (el ejemplo utiliza la cámara y mi emulador no lo tenía configurado), sino que trabajó en el dispositivo Galaxy Nexus. El ejemplo toma una fotografía utilizando la cámara del dispositivo y la carga en Google Drive.

  • ¿Cómo habilitar la compilación externa en Android Studio permanentemente?
  • NoClassDefFoundError con bibliotecas en Android Studio
  • IDEA - "Importar desde un modelo externo" vs "Crear desde una fuente existente"?
  • Android Studio no se inicia: No se pudo encontrar o cargar la clase principal com.intellij.idea.Main
  • Quitar archivos .iml de GIT para bien
  • IntelliJ MyClass.class (No hay tal archivo o directorio) cuando se ejecuta la aplicación
  • No se puede encontrar el valor del paquete en AndroidManifest.xml para el módulo
  • ¿Puedo activar el registro detallado de DEX?
  • IntelliJ IDEA editar código de android durante la depuración
  • Android Studio: ¿Cómo migrar el proyecto IntelliJ a Gradle?
  • ¿Qué significa // noinspection ForLoopReplaceableByForEach?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.