Migrando un proyecto Android de Eclipse a AndroidStudio / Gradle: error “Unmappable character for encoding UTF-8” y de dependencias

Migrar una app de Eclipse a AndroidStudio, no requiere de demasiadas complicaciones (la versión que voy a utilizar es la 1.4), al fin y al cabo AndroidStudio se parece bastante a Eclipse, aunque no está basado en él. Google desarrolló su IDE, o como se traduce al español su "ambiente de desarrollo integrado" :-), basándose en la versión de código abierto comunitaria de IntelliJ IDEA de JetBrains. Este IDE es la base para muchos otros programas como WebStorm etc...

En principio es fácil de realizar la migración porque el IDE provee una opción para importar proyectos de Eclipse.

No obstante, se nos pueden generar algunos problemas o sorpresas porque la compilación cambia en AS, ya que utiliza Gradle. En el empaquetado estándar de Eclipse no viene incluido Gradle (aunque se puede incorporar).

Gradle es un "build automation tool", es decir, una herramienta de construcción / builds.

Es una herramienta muy completa y compleja, pero para el desarrollo en Android, a priori se utiliza para marcar por ejemplo los valores que antes se insertaban en el Androidmanifest.xml, y que tienen que ver con la compilación como minSdkVersion o targetSdkVersion, y también para guardar referencia de las dependencias / librerías.

Si queréis ampliar conocimientos, os recomiendo este artculo, en el que podréis ver que Gradle surge para suplir las deficiencias de Ant y Maven en Java (otras herramientas de automatización de builds).

http://elblogdepicodev.blogspot.com.es/2012/03/herramienta-de-construccion-gradle.html

  1. El primer error que me ha surgido al compilar ha sido: error “Unmappable character for encoding UTF-8”
    errorutf-8Para solucionar este problema de caracteres, solo tenemos que escribir lo siguiente en el archivo de configuración de Gradle build.gradle:
    compileOptions.encoding = 'ISO-8859-1'

    El archivo completo:

    apply plugin: 'com.android.application'
    android {
     compileOptions.encoding = 'ISO-8859-1'
     compileSdkVersion 7
     buildToolsVersion "23.0.1"
    
     defaultConfig {
     applicationId "xxxxxxxxxxxxx"
     minSdkVersion 7
     targetSdkVersion 14
     }
    
     buildTypes {
     release {
     minifyEnabled false
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
     }
     }
    }
    

  2. El otro error que ha surgido ha sido un problema de dependencias. Mi proyecto en Eclipse utiliza una archivo jar para poder visualizar pdfs, estaba añadido como dependencia. En la importación se ha perdido porque Gradle no recoge esta información.

La solución es añadirlo de nuevo al proyecto, la forma de añadir esa dependencia también se parece a Eclipse pero no es similar.
Si en Eclipse por ej. pulsábamos botón derecho sobre el nombre del proyecto en el explorador del proyecto (project explorer), y después clic en properties.
androidstudio-1

Y después Java Build Path > Libraries.

androidstudio-2

En AndroidStudio pulsaremos botón derecho sobre el nombre del proyecto y "open module settings":

androidstudio-3

Y buscaremos la pestaña dependencies, donde podremos buscar el archivo jar pulsando en el botón de +.

androidstudio-4

Al grabar el archivo build.gradle se habrá actualizado con la siguiente información:

dependencies {
 compile files('libs/pdfviewer.jar')
}

Implementé estos cambios y la aplicación compiló sin problemas!

Escrito el 15 oct 2015
comments powered by Disqus

« Gridview: Evitar postbacks paginando u ordenando - Instalar DLL en el GAC programáticamente »