Crear archivo aar en Android Studio

173

Me gustaría crear un archivo aar para mi biblioteca en Android Studio, hubiera optado por una opción jar pero mi biblioteca tiene recursos.

¿Alguna idea de cómo crear un archivo aar desde una biblioteca?

AndroidEntusiasta
fuente

Respuestas:

225

Si su biblioteca está configurada como una biblioteca de Android (es decir, utiliza la apply plugin: 'com.android.library'declaración en su archivo build.gradle), generará un .aar cuando se construya. Aparecerá en el directorio build / salidas / aar / en el directorio de su módulo.

Puede elegir el tipo "Biblioteca de Android" en Archivo> Nuevo módulo para crear una nueva Biblioteca de Android.

Scott Barta
fuente
3
El control de versiones es realmente externo al AAR en sí. Por lo general, configuraría un archivo Maven pom que tiene información de versión.
Scott Barta
1
Tengo un archivo aar en la carpeta libs de la biblioteca, por lo que no está incluido en la compilación / salidas / aar / directamente
Ganesh Jogam
44
¡El archivo aar apareció en app / build / salidas / aar / y no en la carpeta / build / en el nivel del proyecto! en caso de que no lo encuentre ...
peresisUser
29
Tenga en cuenta que para generar mi aar, tuve que hacer un Build > Rebuild Projecten Android Studio. Simplemente ejecutar, depurar o compilar APK no generó el aarpara mí.
Adam Johns
8
@AdamJohns la forma más rápida de estar ./gradlew moduleName:assembleReleaseen la pestaña de la terminal
Sameer J
159

Recupere el archivo .aar exportado de las compilaciones locales

Si tiene un módulo definido como un proyecto de biblioteca de Android, obtendrá archivos .aar para todos los tipos de compilación (depuración y lanzamiento de forma predeterminada) en el build/outputs/aar/directorio de ese proyecto.

your-library-project
    |- build
        |- outputs
            |- aar
                |- appframework-debug.aar
                 - appframework-release.aar

Si estos archivos no existen, inicie una compilación con

gradlew assemble

para usuarios de macOS

./gradlew assemble

Detalles del proyecto de biblioteca

Un proyecto de biblioteca tiene un build.gradlearchivo que contiene apply plugin: com.android.library. Para referencia de esta biblioteca empaquetada como un .aararchivo, tendrá que definir algunas propiedades como paquete y versión.

build.gradleArchivo de ejemplo para la biblioteca (este ejemplo incluye ofuscación en la versión):

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 21
        versionCode 1
        versionName "0.1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

Archivo de referencia .aar en su proyecto

En el proyecto de su aplicación, puede colocar este .aararchivo en la libscarpeta y actualizar el build.gradlearchivo para hacer referencia a esta biblioteca utilizando el siguiente ejemplo:

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs' //this way we can find the .aar file in libs folder
    }
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.0.0"

    defaultConfig {

        minSdkVersion 14
        targetSdkVersion 20
        versionCode 4
        versionName "0.4.0"

        applicationId "yourdomain.yourpackage"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
        }
    }
}

dependencies {
    compile 'be.hcpl.android.appframework:appframework:0.1.0@aar'
}

Se pueden encontrar opciones alternativas para hacer referencia a archivos de dependencia locales en gradle en: http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project

Compartir dependencias usando maven

Si necesita compartir estos .aararchivos dentro de su organización, consulte maven. Se puede encontrar un buen artículo sobre este tema en: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- biblioteca-aar -ross

Acerca del formato de archivo .aar

Un archivo aar es solo un archivo .zipcon una extensión alternativa y contenido específico. Para obtener más información, consulte este enlace sobre el formato aar .

hcpl
fuente
11
Maravillosa y detallada respuesta. +1 para gradlew assemble- eso resolvió el problema que estaba teniendo.
Farbod Salamat-Zadeh
@hcpl Cómo convertir mi proyecto de Android en un archivo .aar
Ana
1
@NaveedAhmad intentaste ./gradlew
hcpl
@NaveedAhmad, entonces probablemente esté ejecutando desde la ubicación incorrecta o su configuración de Gradle es diferente. Puede intentar "localizar gradlew" pero realmente si tiene problemas para encontrar y ejecutar gradlew, entonces esta breve respuesta no lo ayudará
hcpl
Para la posteridad: gradlewes un script en el directorio de nivel superior del proyecto .
CodeClown42
11

tal como dijo el usuario hcpl, pero si no desea preocuparse por la versión de la biblioteca, puede hacer esto:

dependencies {
    compile(name:'mylibrary', ext:'aar')
}

ya que es un poco molesto tener que actualizar la versión cada vez. También hace que no preocuparse por el espacio de nombres sea más fácil de esta manera.

j2emanue
fuente
5

Después de seguir los pasos primero y segundo mencionados en la respuesta de hcpl en el mismo hilo , agregamos , '* .aar'], dir: 'libs' en our-android-app-project-based-on-gradle / app / archivo build.gradle como se muestra a continuación:

...

dependencies {
       implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

...

Nuestra versión gradle es com.android.tools.build:gradle:3.2.1

Dhananjay M
fuente
3

Para crear AAR

mientras crea siga los pasos a continuación.

File->New->New Module->Android Library and create.

Para generar AAR

Vaya a gradle en el panel superior derecho en el estudio de Android, siga los pasos a continuación.

Gradle->Drop down library name -> tasks-> build-> assemble or assemble release

AAR se generará en build / salidas / aar /

Pero si queremos que AAR se genere en una carpeta específica en el directorio del proyecto con el nombre que desee, modifique el nivel de su aplicación build.gradlecomo se muestra a continuación

defaultConfig {
    minSdkVersion 26
    targetSdkVersion 28
    versionCode System.getenv("BUILD_NUMBER") as Integer ?: 1
    versionName "0.0.${versionCode}"


    libraryVariants.all { variant ->

        variant.outputs.all { output ->
            outputFileName = "/../../../../release/" + ("your_recommended_name.aar")
        }
    }
}

Ahora creará una carpeta con el nombre "release" en el directorio del proyecto que tendrá AAR.

Tarun A
fuente