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
- ¿Por qué el corredor de pruebas de Android informa de "Empty test suite"?
- IntelliJ IDEA editar código de android durante la depuración
- Android Studio no identifica el archivo xml como archivo de diseño
- Error: Error interno: (java.lang.NoSuchMethodError) que afecta a todos mis proyectos
- Android Studio no puede importar módulos después de la actualización
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 🙂
- Configuración de JAVA_HOME para intelliJ?
- ¿Cómo crear un nuevo proyecto sin el apoyo de Gradle?
- ¿Dónde está Ver Control de Emulador en IntelliJ?
- Android Studio AI 140
- Añadir facebook SDK a IntelliJ Android proyecto?
- Autogeneración de Android TAG de registro en Android Studio / Intellij idea
- ¿Cómo mantener archivos como * .scala y * .txt de ser incluido en mis archivos apk?
- Plugin de SonarQube con Android Studio
Seguí adelante y creé el proyecto IntelliJ IDEA desde cero, pasé unos 15 minutos, funciona bien.
-
Descargue la biblioteca y las dependencias de Drive API v2 .
-
Desempaquete en algún lugar, abra
readme.html
, pasar un par de minutos leyendo para entender qué frascos son necesarios. -
Cree un nuevo proyecto de aplicación de Android en IDEA utilizando un asistente con el paquete
MainActivity
yMainActivity
. Utilice Android 4.2.2 API de Google como plataforma. -
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
-
-
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.
-
File
|Import Module
, navegue aANDROID_SDK\extras\google\google_play_services\libproject\google-play-services_lib
, desde los orígenes existentes. -
Añada
google-play-services.jar
a las dependencias del módulo importado, habilite la casilla de verificación Exportar , debería verse así . -
Agregue el módulo creado en el paso 6 a las dependencias de su módulo de aplicación principal .
-
Copie el código de ejemplo de
MainActivity
desde el inicio rápido , el paso 4 en el archivoMainActivity.java
que reemplaza el código antiguo, editeAndroidManifest.xml
también por la guía. -
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 ver realmente un mapa de bits tomado de un volcado de montón de Android
- ¿Cómo crear una cuenta de usuario _segmentar desde un token de Google para Android?