Créer un fichier aar dans Android Studio

173

Je voudrais créer un fichier aar pour ma bibliothèque dans Android Studio, j'aurais choisi une option jar mais ma bibliothèque a des ressources.

Une idée comment créer un fichier aar à partir d'une bibliothèque?

AndroidEnthusiast
la source

Réponses:

225

Si votre bibliothèque est configurée comme bibliothèque Android (c'est-à-dire qu'elle utilise l' apply plugin: 'com.android.library'instruction dans son fichier build.gradle), elle affichera un .aar lors de sa construction. Il apparaîtra dans le répertoire build / output / aar / du répertoire de votre module.

Vous pouvez choisir le type "Bibliothèque Android" dans Fichier> Nouveau module pour créer une nouvelle bibliothèque Android.

Scott Barta
la source
3
Le contrôle de version est vraiment externe à l'AAR lui-même. Vous configurez généralement un fichier pom Maven contenant des informations sur la version.
Scott Barta
1
J'ai un fichier aar dans le dossier libs de la bibliothèque, il n'est donc pas inclus dans la construction / sorties / aar / directement
Ganesh Jogam
4
aar est apparu dans app / build / sorties / aar / et non dans le dossier / build / au niveau du projet! au cas où vous ne le trouveriez pas ...
peresisUser
29
Notez que pour générer mon aar, j'ai dû faire un Build > Rebuild Projectdans Android Studio. Le simple fait d'exécuter, de déboguer ou de créer l'APK n'a pas généré le fichier aarpour moi.
Adam Johns
8
@AdamJohns le moyen le plus rapide d'être ./gradlew moduleName:assembleReleasedans l'onglet Terminal
Sameer J
159

Récupérer le fichier .aar exporté à partir des versions locales

Si vous avez un module défini comme un projet de bibliothèque Android, vous obtiendrez des fichiers .aar pour toutes les versions de construction (débogage et publication par défaut) dans le build/outputs/aar/répertoire de ce projet.

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

Si ces fichiers n'existent pas, lancez une compilation avec

gradlew assemble

pour les utilisateurs de macOS

./gradlew assemble

Détails du projet de bibliothèque

Un projet de bibliothèque a un build.gradlefichier contenant apply plugin: com.android.library. Pour référence à cette bibliothèque conditionnée sous forme de .aarfichier, vous devrez définir certaines propriétés telles que le package et la version.

Exemple de build.gradlefichier pour la bibliothèque (cet exemple inclut l'obfuscation dans la version):

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'
        }
    }
}

Référencez le fichier .aar dans votre projet

Dans votre projet d'application, vous pouvez déposer ce .aarfichier dans le libsdossier et mettre à jour le build.gradlefichier pour référencer cette bibliothèque à l'aide de l'exemple ci-dessous:

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'
}

Des options alternatives pour référencer les fichiers de dépendance locaux dans gradle peuvent être trouvées sur: http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project

Partage de dépendances à l'aide de maven

Si vous avez besoin de partager ces .aarfichiers au sein de votre organisation, consultez maven. Un bel article sur ce sujet peut être trouvé à: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- bibliothèque-aar-across

À propos du format de fichier .aar

Un fichier aar est juste un fichier .zipavec une extension alternative et un contenu spécifique. Pour plus de détails, consultez ce lien sur le format aar .

hcpl
la source
11
Réponse merveilleuse et détaillée. +1 pour gradlew assemble- cela a résolu le problème que j'avais.
Farbod Salamat-Zadeh
@hcpl Comment convertir mon projet Android en fichier .aar
Ana
1
@NaveedAhmad avez-vous essayé ./gradlew
hcpl
@NaveedAhmad alors vous exécutez probablement à partir du mauvais emplacement ou votre configuration de gradle est différente. Vous pouvez essayer "localiser gradlew" mais vraiment si vous rencontrez des difficultés pour trouver et exécuter gradlew alors cette brève réponse ne vous aidera pas
hcpl
Pour la postérité: gradlewest un script dans le répertoire de niveau supérieur du projet .
CodeClown42
11

comme l'a dit l'utilisateur hcpl, mais si vous ne voulez pas vous soucier de la version de la bibliothèque, vous pouvez le faire:

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

car c'est un peu ennuyeux de devoir mettre à jour la version à chaque fois. De plus, cela facilite le fait de ne pas se soucier de l'espace de nom.

j2emanue
la source
5

Après avoir suivi les première et deuxième étapes mentionnées dans la réponse du hcpl dans le même fil , nous avons ajouté , '* .aar'], dir: 'libs' dans le fichier our-android-app-project-based-on-gradle / app / build.gradle comme indiqué ci-dessous:

...

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

...

Notre version gradle est com.android.tools.build:gradle:3.2.1

Dhananjay M
la source
3

Pour créer AAR

lors de la création, suivez les étapes ci-dessous.

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

Pour générer AAR

Accédez à la gradation dans le volet supérieur droit dans Android Studio, suivez les étapes ci-dessous.

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

L'AAR sera généré dans build / output / aar /

Mais si nous voulons qu'AAR soit généré dans un dossier spécifique du répertoire du projet avec le nom de votre choix, modifiez le niveau de votre application build.gradlecomme ci-dessous

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")
        }
    }
}

Maintenant, il va créer un dossier avec le nom "release" dans le répertoire du projet qui aura AAR.

Tarun A
la source