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?
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?
Respuestas:
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.
aar
, tuve que hacer un Build > Rebuild Project
en Android Studio. Simplemente ejecutar, depurar o compilar APK no generó el aar
para mí.
./gradlew moduleName:assembleRelease
en la pestaña de la terminal
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
Un proyecto de biblioteca tiene un build.gradle
archivo que contiene apply plugin: com.android.library
. Para referencia de esta biblioteca empaquetada como un .aar
archivo, tendrá que definir algunas propiedades como paquete y versión.
build.gradle
Archivo 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'
}
}
}
En el proyecto de su aplicación, puede colocar este .aar
archivo en la libs
carpeta y actualizar el build.gradle
archivo 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
Si necesita compartir estos .aar
archivos 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
Un archivo aar es solo un archivo .zip
con una extensión alternativa y contenido específico. Para obtener más información, consulte este enlace sobre el formato aar .
gradlew assemble
- eso resolvió el problema que estaba teniendo.
gradlew
es un script en el directorio de nivel superior del proyecto .
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.
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
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.gradle
como 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.
por cierto @aar no tiene dependencia transitiva. necesita un parámetro para activarlo: dependencias transitivas no resueltas para la biblioteca aar usando gradle