Створіть файл aar в Android Studio


173

Я хотів би створити файл aar для своєї бібліотеки в Android Studio, я б пішов із варіантом jar, але моя бібліотека має ресурси.

Будь-яка ідея, як створити файл aar з бібліотеки?

Відповіді:


225

Якщо ваша бібліотека створена як бібліотека Android (тобто вона використовує apply plugin: 'com.android.library'оператор у своєму файлі build.gradle), вона буде виводити .aar під час її побудови. Він відображатиметься у каталозі build / outputs / aar / у каталозі вашого модуля.

Ви можете вибрати тип "Бібліотека Android" у меню Файл> Новий модуль, щоб створити нову бібліотеку Android.


3
Версія дійсно зовнішня для самого AAR. Зазвичай ви встановите файл Maven pom з інформацією про версію.
Скотт Барта

1
У мене є файл aar у папці libs бібліотеки, тому він не входить до збірки / виходів / aar / безпосередньо
Ganesh Jogam

4
файл aar з’явився у програмі / build / outputs / aar /, а не в папці / build / на рівні проекту! на випадок, якщо ви його не знайдете ...
peresisПользователь

29
Зауважте, що для створення мого aarя повинен був зробити Build > Rebuild Projectв Android Studio. Просто запуск, налагодження або створення APK не створили aarдля мене.
Адам Джонс

8
@AdamJohns швидший спосіб перебувати ./gradlew moduleName:assembleReleaseна вкладці терміналу
Sameer J

159

Отримайте експортований .aar файл із локальних збірок

Якщо у вас є модуль, визначений як проект бібліотеки для Android, ви отримаєте .aar файли для всіх ароматів збірки (налагодження та випуск за замовчуванням) у build/outputs/aar/каталозі цього проекту.

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

Якщо цих файлів не існує, запустіть збірку

gradlew assemble

для користувачів macOS

./gradlew assemble

Деталі бібліотечного проекту

Бібліотечний проект має build.gradleфайл, що містить apply plugin: com.android.library. Для довідки про цю бібліотеку, упаковану як .aarфайл, вам доведеться визначити деякі властивості, такі як пакунок та версія.

Приклад build.gradleфайлу для бібліотеки (цей приклад включає затухання у випуску):

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

Довідковий файл .aar у вашому проекті

У вашому проекті програми ви можете скинути цей .aarфайл у libsпапку та оновити build.gradleфайл для посилання на цю бібліотеку, використовуючи наведений нижче приклад:

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

Альтернативні варіанти посилання на файли локальних залежностей у gradle можна знайти за посиланням: http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project

Поділ залежностей за допомогою Maven

Якщо вам потрібно поділитися цими .aarфайлами у вашій організації, перевіряйте maven. Приємне написання на цю тему можна знайти за посиланням: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- бібліотека-aar-через

Про формат файлу .aar

Файл aar - це лише a .zipз альтернативним розширенням та конкретним вмістом. Для детальної інформації перевірте це посилання про формат aar .


11
Чудова і детальна відповідь. +1 за gradlew assemble- це вирішило проблему, яку я мав.
Farbod Salamat-Zadeh

@hcpl Як перетворити мій проект Android на .aar файл
Ana

1
@NaveedAhmad ти спробував ./gradlew
hcpl

@NaveedAhmad, то ви, ймовірно, виконуєте з неправильного місця розташування, або налаштування gradle відрізняється. Ви можете спробувати "знайти gradlew", але дійсно, якщо у вас виникають проблеми з пошуком та виконанням gradlew, тоді ця коротка відповідь вам не допоможе
hcpl

Для нащадків: gradlewце скрипт у каталозі верхнього рівня проекту .
CodeClown42

11

так, як сказав hcpl користувача, але якщо ви не хочете турбуватися про версію бібліотеки, ви можете зробити це:

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

як свого роду дратує, що доведеться щоразу оновлювати версію. Також це полегшує не турбуватися про простір імен таким чином.


5

Дотримуючись першого та другого кроків, зазначених у відповіді hcpl у тому ж потоці , ми додали : '* .aar'], dir: 'libs' у нашому-android-app-project-project-based-on-gradle / app / файл build.gradle, як показано нижче:

...

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

...

Наша версія gradle - com.android.tools.build:gradle:3.2.1


3

Для створення AAR

під час створення виконайте нижче дії.

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

Для створення AAR

Перейдіть до gradle вгорі правої панелі в андроїд-студії, виконайте наступні кроки.

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

AAR буде генеруватися у збірці / виходи / aar /

Але якщо ми хочемо, щоб AAR генерувався у певній папці в каталозі проекту з потрібним ім'ям, змініть рівень програми, build.gradleяк показано нижче

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

Тепер він створить папку з назвою "release" в каталозі проекту, який матиме AAR.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.