android - para - project sdk intellij idea
Android Studio-ImportaciĆ³n de la biblioteca Simple-Xml (3)
Me estoy volviendo loco con mi IDE de Android Studio.
Estoy dispuesto a agregar la biblioteca Maven simple-xml de Central (v2.7.1)
El proyecto compila bien
Gradle tiene la dependencia lib en su
build.gradle
:dependencies { compile ''com.android.support:appcompat-v7:18.0.0'' compile ''org.simpleframework:simple-xml:2.7.1'' }
La exportación se comprueba en la configuración del módulo de Android Studio para la lib simple-xml:
Captura de pantalla aquí: http://s6.postimg.org/xxgj56zkx/Module_Settings.png
Y obtuve la Clase no encontrada cuando ejecuto mi aplicación ...
java.lang.NoClassDefFoundError: org.simpleframework.xml.core.Persister
Estoy perdido, parece que Gradle no empaqueta la lib y las dependencias en la aplicación por alguna razón ...
Algunas ideas ???
Edit1 : mi versión de Android Studio es 0.2.13 (más reciente), Gradle 0.5. +
Edit2 : full build.gradle que uso
buildscript { repositories { mavenCentral() } dependencies { classpath ''com.android.tools.build:gradle:0.5.+'' } } apply plugin: ''android'' repositories { mavenCentral() } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 14 targetSdkVersion 18 } } dependencies { compile ''com.android.support:appcompat-v7:18.0.0'' compile ''org.simpleframework:simple-xml:2.7.1'' }
Obtuve el mismo error al usar maven con Android. Corregí la dependencia y todo funcionó bien. Es mi dependencia para la biblioteca simple-xml:
<dependency>
<groupId>org.simpleframework</groupId>
<artifactId>simple-xml</artifactId>
<version>2.7.1</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>xpp3</artifactId>
<groupId>xpp3</groupId>
</exclusion>
<exclusion>
<artifactId>stax-api</artifactId>
<groupId>stax</groupId>
</exclusion>
<exclusion>
<artifactId>stax</artifactId>
<groupId>stax</groupId>
</exclusion>
<exclusion>
<artifactId>spring-web</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
Debería agregar la biblioteca simple-xml
esta manera:
compile(''org.simpleframework:simple-xml:2.7.1'') {
exclude group: ''stax'', module: ''stax-api''
exclude group: ''xpp3'', module: ''xpp3''
}
Las bibliotecas stax-api
y xpp3
entran en conflicto con las clases de Android. Las clases de estas jarras parecen estar incluidas en Android.
El mensaje original dex
fue:
problemas para procesar "javax / xml / stream / events / StartElement.class":
Uso desacertado o incorrecto de una clase principal (java. * O javax. *) Cuando no se está creando una biblioteca principal.
A menudo, esto se debe a la inclusión inadvertida de un archivo de biblioteca central en el proyecto de su aplicación cuando se utiliza un IDE (como Eclipse). Si está seguro de que no está definiendo intencionadamente una clase principal, esta es la explicación más probable de lo que está sucediendo.
Sin embargo, en realidad podría estar tratando de definir una clase en un espacio de nombres central, cuya fuente puede haber tomado, por ejemplo, de un proyecto de máquina virtual que no sea de Android. Esto seguramente no funcionará. Como mínimo, pone en peligro la compatibilidad de su aplicación con las versiones futuras de la plataforma. También es a menudo de legalidad cuestionable.
Si realmente desea construir una biblioteca principal, que solo es apropiada como parte de la creación de una distribución de máquina virtual completa, en lugar de compilar una aplicación, utilice la opción "--core-library" para suprimir este mensaje de error.
Si continúa y utiliza "--core-library" pero de hecho está creando una aplicación, entonces pregúntele que su aplicación aún no podrá compilarse o ejecutarse, en algún momento. Esté preparado para clientes enojados que, por ejemplo, descubran que su aplicación deja de funcionar una vez que actualizan su sistema operativo. Usted será el culpable de este problema.
Si está utilizando legítimamente algún código que se encuentra en un paquete básico, entonces la alternativa segura más fácil que tiene es volver a empaquetar ese código. Es decir, mueva las clases en cuestión a su propio espacio de nombres de paquete. Esto significa que nunca estarán en conflicto con las clases del sistema central. JarJar es una herramienta que puede ayudarte en este empeño. Si encuentra que no puede hacer esto, entonces eso es una indicación de que el camino en el que se encuentra conducirá finalmente al dolor, el sufrimiento, el dolor y la lamentación.
Encontré el problema.
Fue el plugin de Graddle 0.5. + Como esperaba.
El Android Studio 0.3.0 con el complemento Gradle 0.6. + (Gradle 1.8) ahora soluciona el problema.
Sin embargo, hice que la aplicación funcionara con Android Studio 0.2.13 y gradle plugin 0.5 de esta manera:
Como el complemento de Gradle se niega a implementar la biblioteca desde maven central, descargué la biblioteca y las dependencias al directorio lib de mi proyecto. Configuré el proyecto para usar la biblioteca como local en el directorio lib del proyecto.
Instrucciones para la solución alternativa:
eliminar todas las referencias en mi proyecto a simple-xml (maven central) en la configuración del módulo
Copie simple-xml-2.7.1.jar, stax-1.2.0.jar, stax-api-1.0.1.jar y xpp3-1.1.3.3.jar en el directorio lib de mi proyecto
Seleccione el lib simple-xml-2.7.1.jar en mi proyecto e importe la lib utilizando el menú contextual Agregar como biblioteca
Cambia el build.gradle así:
dependencias {
compile ''com.android.support:appcompat-v7:18.0.0'' compile files(''simple-xml-2.7.1.jar'')
}
Nota: no incluya las dependencias, de lo contrario crearán conflictos con el sistema Android como lo menciona Grzegorz