Configurar Android Studio

Publicado por: Kamil Zabdyr (@kamilzabdyr) – Colaborador

Si no quieres el método tradicional de desarrollar aplicaciones (usando Eclipse) y has optado por Android Studio, puede que hayas tenido problemas al seguir el tutorial de instalación del SDK ArcGIS para Android con IntelliJ IDE (Gradle), aquí te vamos a explicar cómo resolverlos.

Si estás impaciente y quieres saltarte la explicación puedes descargar directamente el proyecto desde el repositorio: https://github.com/kamilZ/arcgisSampleAndroidStudio

Si sigues leyendo te vamos a explicar cómo resolver los dos problemas:

El primero la librería Jackson:

Error:duplicate files during packaging of APK C:\Users\Kamil\Documents\Android\Proyectos\arcgisSampleAndroidStudio\app\build\outputs\apk\app-debug-unaligned.apk
Path in archive: META-INF/LGPL2.1
Origin 1: C:\Users\Kamil\Documents\Android\Proyectos\arcgisSampleAndroidStudio\app\libs\jackson-mapper-lgpl-1.9.5.jar
Origin 2: C:\Users\Kamil\Documents\Android\Proyectos\arcgisSampleAndroidStudio\app\libs\jackson-core-lgpl-1.9.5.jar

Algunos de los archivos de META-INF producen un conflicto a la hora de compilar. Para ello debemos excluirlos de la compilación. Lo hacemos añadiendo en el build.gradle de nuestro módulo este código:

El segundo las librerías nativas del SDK:

java.lang.RuntimeException: Unable to start activity ComponentInfo{desarrolladores.esri.es.esridemo/desarrolladores.esri.es.esridemo.MyActivity}: android.view.InflateException: Binary XML file line #11: Error inflating class com.esri.android.map.MapView
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load runtimecore_java from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/desarrolladores.esri.es.esridemo-2.apk"],nativeLibraryDirectories=[/data/app-lib/desarrolladores.esri.es.esridemo-2, /vendor/lib, /system/lib]]]: findLibrary returned null

Hay dos formas de resolverlo.

La recomendada es copiar las dependencias a la carpeta jniLibs de nuestra aplicación, que por defecto debemos crearla en Projecto/modulo/src/main/jniLibs. Dentro de esa carpeta copiaremos las librerías nativas tal cual vienen en el SDK.

La solución alternativa es la de utilizar esta tarea de Gradle para convertir estas librerías en un jar que sí se puede importar al proyecto como una dependencia.

¿Y qué es lo que hace? Busca todas las librerías nativas en el proyecto, respetando la estructura de carpetas las comprime en el archivo lib.jar bajo el directorio lib. (Esta solución la encontraréis también en el repo un par de commits atrás)

Con estos dos problemas resueltos podremos empezar a usar ArcGIS Android SDK en nuestras apps con Gradle.

Recordad que si no os importa añadir 21MB a la aplicación podéis utilizar cualquiera de estos métodos, pero si necesitáis reducir el tamaño os invito a crear product flavors para las distintas arquitecturas (ver referencias) aprovechando que gradle lo permite.

Espero que sirva de ayuda. Cualquier duda podéis dejarla en los comentarios.


Referencias:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Visit Us On TwitterVisit Us On FacebookVisit Us On Google PlusVisit Us On PinterestVisit Us On YoutubeVisit Us On LinkedinCheck Our Feed