Convertir jar a aar

Convertir JAR a AAR

Empaqueta una biblioteca Java dentro de un archivo Android y comprueba sus dependencias y compatibilidad.

Convierte archivos JAR en línea

Todavía no tenemos un conversor en línea específico para JAR a AAR, pero puedes convertir archivos JAR en línea a estos formatos:

Cómo convertir un archivo jar a aar

Un proyecto de Android puede requerir un AAR cuando una biblioteca suministrada se distribuye como un JAR, pero también necesita recursos de Android, entradas de manifest o metadatos de biblioteca. La conversión empaqueta las clases JVM existentes en un contenedor de biblioteca de Android; no convierte automáticamente el código Java de escritorio en código compatible con Android.

Qué es el formato JAR

Un JAR (Java ARchive) es un paquete basado en ZIP que contiene archivos JVM .class, recursos, metadatos y, opcionalmente, un manifest que identifica una clase principal ejecutable. Las bibliotecas de Java y Kotlin, las aplicaciones de escritorio, Maven, Gradle, IntelliJ IDEA y Android Studio utilizan habitualmente archivos JAR.

Un JAR puede utilizarse directamente en un proyecto de Android cuando su bytecode y sus dependencias son compatibles con Android. No proporciona inherentemente recursos de Android, un manifest de biblioteca de Android, reglas de R8 para consumidores, bibliotecas nativas ni metadatos de empaquetado específicos de Android.

Qué es el formato AAR

Un AAR (Android ARchive) es el formato de archivo de biblioteca del Android Gradle Plugin. También es un archivo ZIP que normalmente contiene classes.jar y AndroidManifest.xml, con res/, assets/, jni/, prefab/, lint.jar, proguard.txt y archivos de símbolos de recursos opcionales.

Un AAR puede proporcionar recursos de Android, declaraciones de manifest, bibliotecas nativas, reglas de shrinker para consumidores y código de biblioteca compilado como un único artefacto de biblioteca de Android. Gradle combina esos componentes en una aplicación. El archivo no contiene automáticamente dependencias externas de Maven; normalmente se declaran en los metadatos de publicación o se proporcionan por separado.

Cómo empaquetar un JAR como AAR

Inspecciona primero el JAR

Enumera su contenido con la herramienta del JDK antes de empaquetarlo:

jar tf vendor.jar

Confirma que contiene clases de biblioteca en lugar de una aplicación de escritorio y comprueba su nivel de bytecode de Java. El compilador D8 de Android puede procesar bytecode de Java compatible, pero las clases que llaman a API exclusivas de escritorio, como AWT, Swing o módulos de JDK no disponibles, no serán utilizables en Android únicamente mediante el empaquetado.

Wrapper mínimo para una biblioteca Java pura

Para un JAR que no necesita código fuente de Android, recursos ni declaraciones de manifest adicionales, crea un directorio AAR que contenga el JAR con el nombre requerido classes.jar y un manifest:

mkdir aar-temp
cp vendor.jar aar-temp/classes.jar
printf '%s\n' '<manifest xmlns:android="http://schemas.android.com/apk/res/android" />' > aar-temp/AndroidManifest.xml
(cd aar-temp && zip -r ../vendor.aar classes.jar AndroidManifest.xml)

En Windows, JDK jar o 7-Zip pueden crear el archivo ZIP: añade classes.jar y AndroidManifest.xml en la raíz del archivo y guárdalo como vendor.aar. No los coloques dentro de un directorio adicional.

Esta es una operación de empaquetado, no una compilación ni una conversión de dependencias. Si el JAR también necesita recursos de Android, añádelos en la raíz del AAR, dentro de res/; añade los assets de la aplicación dentro de assets/ y las declaraciones necesarias a AndroidManifest.xml.

Utiliza un módulo de biblioteca de Android para las adiciones de Android

  1. En Android Studio, selecciona File → New → New Module → Android Library y elige un SDK mínimo adecuado.
  2. Coloca el código fuente de Android, los recursos, los assets y las declaraciones de manifest en los directorios src/main del módulo.
  3. Añade el JAR original como dependencia de tiempo de compilación si el código del módulo lo utiliza:
dependencies {
    implementation files('libs/vendor.jar')
}

Para Kotlin DSL, utiliza implementation(files("libs/vendor.jar")). Al compilar el módulo con ./gradlew :mylibrary:assembleRelease, se crea un AAR en una ruta como mylibrary/build/outputs/aar/mylibrary-release.aar.

Una compilación estándar de una biblioteca de Android generalmente no integra una dependencia JAR local en el AAR resultante. La dependencia permanece separada, por lo que un consumidor puede necesitar el JAR original. Para distribuir un único archivo, utiliza el wrapper mínimo cuando no se necesite código de Android compilado adicional, combina el JAR en classes.jar mediante una tarea de empaquetado personalizada o utiliza un plugin de fat-AAR mantenido después de verificar su compatibilidad con la versión del Android Gradle Plugin del proyecto. Una solución fat-AAR puede crear clases duplicadas y conflictos de dependencias.

Comprobaciones de compatibilidad y calidad

Cambiar el nombre de vendor.jar a vendor.aar no es válido porque un AAR espera la biblioteca compilada dentro de classes.jar, además de un manifest de Android. Comprueba el archivo con unzip -l vendor.aar o 7-Zip.

Haz coincidir el nivel de bytecode de la biblioteca con la configuración de compatibilidad de Java y Kotlin de la compilación de Android. Comprueba sus dependencias transitivas, los permisos o componentes de manifest necesarios, las bibliotecas nativas, las referencias a recursos y las reglas de R8 para consumidores; un wrapper manual no puede generar la información que falte.

Prueba el AAR en una aplicación de Android independiente utilizando versiones compatibles del Android Gradle Plugin, compile SDK y minimum SDK. Si la biblioteca contiene únicamente clases Java compatibles con Android y ningún contenido específico de Android, distribuir el JAR original puede ser más sencillo que producir un AAR.

Herramientas online y de escritorio

No existe un convertidor online general fiable de JAR a AAR, porque el resultado correcto depende de los recursos de Android, las declaraciones de manifest, las dependencias y la compatibilidad del bytecode. Evita subir bibliotecas propietarias a servicios web de archivos. Utiliza Android Studio con el Android Gradle Plugin para las compilaciones de módulos, y el comando jar del JDK o 7-Zip para un empaquetado local y transparente de archivos.

Simplemente, es imposible convertir JAR a AAR directamente.
Por lo tanto, no existe un convertidor de jar a aar o un convertidor en línea gratuito de .jar a .aar.

JAR vs AAR: comparación de formatos

Cómo se comparan los formatos JAR y AAR en las propiedades que más importan para esta conversión.

Comparación de los formatos de archivo JAR y AAR
Propiedad .JAR Java Archive .AAR Android Archive
Estándar abierto Sí Parcialmente abierto
Compresión Ambos Sin pérdida
Tamaño de archivo típico Medio Pequeño
Se abre en un navegador web No No
Edición posterior Limitado Limitado
Compatibilidad con metadata Básico Básico
Legible como texto plano No No
Más adecuado para Incrustación en aplicaciones Incrustación en aplicaciones
Introducido 1996 2008
Desarrollador Oracle (originally Sun Microsystems) Google
Tipo MIME application/java-archive application/java-archive

Otras conversiones de archivos .jar

Conversión inversa

Convertir a .aar
desde otros formatos

Compartir en redes sociales: