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?
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?
Réponses:
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.
aar
, j'ai dû faire un Build > Rebuild Project
dans 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 aar
pour moi.
./gradlew moduleName:assembleRelease
dans l'onglet Terminal
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
Un projet de bibliothèque a un build.gradle
fichier contenant apply plugin: com.android.library
. Pour référence à cette bibliothèque conditionnée sous forme de .aar
fichier, vous devrez définir certaines propriétés telles que le package et la version.
Exemple de build.gradle
fichier 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'
}
}
}
Dans votre projet d'application, vous pouvez déposer ce .aar
fichier dans le libs
dossier et mettre à jour le build.gradle
fichier 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
Si vous avez besoin de partager ces .aar
fichiers 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
Un fichier aar est juste un fichier .zip
avec une extension alternative et un contenu spécifique. Pour plus de détails, consultez ce lien sur le format aar .
gradlew assemble
- cela a résolu le problème que j'avais.
gradlew
est un script dans le répertoire de niveau supérieur du projet .
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.
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
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.gradle
comme 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.
btw @aar n'a pas de dépendance transitive. vous avez besoin d'un paramètre pour l'activer: les dépendances transitives non résolues pour la bibliothèque aar à l'aide de gradle