Criar arquivo aar no Android Studio

173

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?

AndroidEnthusiast
fonte

Respostas:

225

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.

Scott Barta
fonte
3
O versionamento é realmente externo ao próprio AAR. Você normalmente configuraria um arquivo pom Maven com informações de versão.
Scott Barta
1
Eu tenho aar arquivo nos libs pasta da biblioteca de modo que não está incluída no build / saídas / AAR / diretamente
Ganesh Jogam
4
O arquivo aar apareceu em app / build / outputs / aar / e não na pasta / build / no nível do projeto! Se você não o encontrar ...
peresisUser
29
Observe que, para gerar o meu aar, eu tive que fazer um Build > Rebuild Projectno Android Studio. Simplesmente executar, depurar ou criar APK não gerou o aarpara mim.
9788 Adam
8
@AdamJohns o percurso mais rápido para ser ./gradlew moduleName:assembleReleaseno guia do terminal
Samir J
159

Recuperar arquivo .aar exportado de compilações locais

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

Detalhes do projeto da biblioteca

Um projeto de biblioteca possui um build.gradlearquivo que contém apply plugin: com.android.library. Para referência desta biblioteca compactada como um .aararquivo, você precisará definir algumas propriedades, como pacote e versão.

build.gradleArquivo 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'
        }
    }
}

Faça referência ao arquivo .aar no seu projeto

No seu projeto de aplicativo, você pode soltar esse .aararquivo na libspasta e atualizar o build.gradlearquivo 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

Compartilhando dependências usando o maven

Se você precisar compartilhar esses .aararquivos 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

Sobre o formato de arquivo .aar

Um arquivo aar é apenas um .zipcom uma extensão alternativa e conteúdo específico. Para detalhes, verifique este link sobre o formato aar .

hcpl
fonte
11
Resposta maravilhosa e detalhada. +1 para gradlew assemble- isso resolveu o problema que eu estava tendo.
Farbod Salamat-Zadeh
@hcpl Como converter meu projeto android em arquivo .aar
Ana
1
@NaveedAhmad você tentou ./gradlew
hcpl
@NaveedAhmad, provavelmente você está executando a partir do local errado ou sua configuração do gradle é diferente. Você poderia tentar "localizar gradlew", mas realmente se você está tendo problemas para constatação e execução gradlew então esta resposta breve não vai ajudá-lo
hcpl
Para posteridade: gradlewé um script no diretório de nível superior do projeto .
CodeClown42
11

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.

j2emanue
fonte
5

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

Dhananjay M
fonte
3

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.gradlecomo 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.

Tarun A
fonte