Gostaria de criar um arquivo AAR para minha biblioteca no Android Studio, eu teria optado por uma opção jar, mas minha biblioteca tem recursos.
Alguma idéia de como criar um arquivo aar a partir de uma biblioteca?
Gostaria de criar um arquivo AAR para minha biblioteca no Android Studio, eu teria optado por uma opção jar, mas minha biblioteca tem recursos.
Alguma idéia de como criar um arquivo aar a partir de uma biblioteca?
Respostas:
Se a sua biblioteca estiver configurada como uma biblioteca Android (ou seja, ela usa a apply plugin: 'com.android.library'
instrução em seu arquivo build.gradle), ela emitirá um .aar quando for criada. Ele aparecerá no diretório build / outputs / aar / no diretório do seu módulo.
Você pode escolher o tipo "Biblioteca Android" em Arquivo> Novo módulo para criar uma nova Biblioteca Android.
aar
, eu tive que fazer um Build > Rebuild Project
no Android Studio. Simplesmente executar, depurar ou criar APK não gerou o aar
para mim.
./gradlew moduleName:assembleRelease
no guia do terminal
Se você tiver um módulo definido como um projeto de biblioteca do Android, obterá arquivos .aar para todos os tipos de build (depuração e lançamento por padrão) no build/outputs/aar/
diretório desse projeto.
your-library-project
|- build
|- outputs
|- aar
|- appframework-debug.aar
- appframework-release.aar
Se esses arquivos não existirem, inicie uma construção com
gradlew assemble
para usuários do macOS
./gradlew assemble
Um projeto de biblioteca possui um build.gradle
arquivo que contém apply plugin: com.android.library
. Para referência desta biblioteca compactada como um .aar
arquivo, você precisará definir algumas propriedades, como pacote e versão.
build.gradle
Arquivo de exemplo para a biblioteca (este exemplo inclui ofuscação na liberação):
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'
}
}
}
No seu projeto de aplicativo, você pode soltar esse .aar
arquivo na libs
pasta e atualizar o build.gradle
arquivo para referenciar esta biblioteca usando o exemplo abaixo:
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'
}
Opções alternativas para referenciar arquivos de dependência local em gradle podem ser encontradas em: http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project
Se você precisar compartilhar esses .aar
arquivos na sua organização, consulte o maven. Uma boa redação deste tópico pode ser encontrada em: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- library-aar-across
Um arquivo aar é apenas um .zip
com uma extensão alternativa e conteúdo específico. Para detalhes, verifique este link sobre o formato aar .
gradlew assemble
- isso resolveu o problema que eu estava tendo.
gradlew
é um script no diretório de nível superior do projeto .
assim como o usuário hcpl disse, mas se você não quiser se preocupar com a versão da biblioteca, faça o seguinte:
dependencies {
compile(name:'mylibrary', ext:'aar')
}
como é meio chato ter que atualizar a versão toda vez. Além disso, torna mais fácil não se preocupar com o espaço para nome.
Após seguir as primeira e segunda etapas mencionadas na resposta do hcpl no mesmo segmento , adicionamos '* .aar'], dir: 'libs' em nosso-android-app-projeto-baseado-em-gradle / app / arquivo build.gradle como mostrado abaixo:
...
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
...
Nossa versão gradle é com.android.tools.build:gradle:3.2.1
Para criar AAR
ao criar, siga as etapas abaixo.
File->New->New Module->Android Library and create
.
Para gerar AAR
Vá para gradle no painel superior direito no android studio, siga as etapas abaixo.
Gradle->Drop down library name -> tasks-> build-> assemble or assemble release
O AAR será gerado em build / outputs / aar /
Mas se queremos que o AAR seja gerado em uma pasta específica no diretório do projeto com o nome que você deseja, modifique o nível do seu aplicativo build.gradle
como abaixo
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")
}
}
}
Agora, ele criará uma pasta com o nome "release" no diretório do projeto, que terá o AAR.
btw @aar não tem dependência transitiva. você precisa de um parâmetro para ativá-lo: Dependências transitivas não resolvidas para a aar library usando gradle