Создать файл aar в Android Studio

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

Любая идея создания файла aar из библиотеки?

Ответ 1

Если ваша библиотека настроена как библиотека Android (т.е. она использует инструкцию apply plugin: 'com.android.library' в файле build.gradle), она будет выводить .aar при ее создании. Он будет отображаться в каталоге build/output/aar/ в каталоге вашего модуля.

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

Ответ 2

Получить экспортированный файл .aar из локальных построек

Если у вас есть модуль, определенный как проект библиотеки Android, вы получите файлы .aar для всех вариантов сборки (отладка и выпуск по умолчанию) в каталоге build/outputs/aar/ этого проекта.

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

Если эти файлы не существуют, запустите сборку с

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:[email protected]'
}

Альтернативные варианты ссылок на файлы локальной зависимости в 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-library-aar-across

О формате .aar

Файл aar - это всего лишь .zip с альтернативным расширением и конкретным контентом. Подробнее см. эту ссылку в формате aar.

Ответ 3

как и пользователь hcpl, но если вы хотите не беспокоиться о версии библиотеки, вы можете сделать это:

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

поскольку его раздражает необходимость обновлять версию каждый раз. Кроме того, это делает не беспокоиться о пространстве имен проще.

Ответ 5

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

...

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

...

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