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


173

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

Любая идея, как создать файл AAR из библиотеки?

Ответы:


225

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

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


3
Управление версиями действительно является внешним по отношению к самому AAR. Обычно вы устанавливаете файл pom Maven с информацией о версии.
Скотт Барта

1
У меня есть файл aar в папке библиотеки libs, поэтому он не включен в сборку / output /
aar

4
Файл aar появился в app / build / output / aar /, а не в папке / build / на уровне проекта! в случае, если вы не найдете его ...
peresisUser

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файл, вам нужно определить некоторые свойства, такие как package и version.

Пример 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-файл - это просто .zipальтернативное расширение и конкретный контент. Для получения подробной информации проверьте эту ссылку о формате AAR .


11
Прекрасный и подробный ответ. +1 за gradlew assemble- это решило проблему, с которой я столкнулся.
Фарбод Саламат-Заде

@hcpl Как конвертировать мой проект Android в файл .aar
Ана

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-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 будет сгенерирован в build / output / 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.