Я хотел бы создать файл aar для своей библиотеки в Android Studio, я бы выбрал опцию jar, но у моей библиотеки есть ресурсы.
Любая идея, как создать файл AAR из библиотеки?
Я хотел бы создать файл aar для своей библиотеки в Android Studio, я бы выбрал опцию jar, но у моей библиотеки есть ресурсы.
Любая идея, как создать файл AAR из библиотеки?
Ответы:
Если ваша библиотека настроена как библиотека Android (т. apply plugin: 'com.android.library'
Е. Она использует инструкцию в своем файле build.gradle), она будет выводить .aar при сборке. Он появится в каталоге build / output / aar / в каталоге вашего модуля.
Вы можете выбрать тип «Библиотека Android» в меню «Файл»> «Новый модуль», чтобы создать новую библиотеку Android.
aar
, я должен был сделать Build > Rebuild Project
в Android Studio. Просто запуск, отладка или сборка APK не сгенерировали aar
для меня.
./gradlew moduleName:assembleRelease
на вкладке терминала
Если у вас есть модуль, определенный как проект библиотеки 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
файл в 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.
Если вам нужно поделиться этими .aar
файлами в вашей организации, проверьте maven. Хорошую статью по этой теме можно найти по адресу: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- библиотека-AAR-по
AAR-файл - это просто .zip
альтернативное расширение и конкретный контент. Для получения подробной информации проверьте эту ссылку о формате AAR .
gradlew assemble
- это решило проблему, с которой я столкнулся.
gradlew
это скрипт в каталоге верхнего уровня проекта .
как сказал пользователь hcpl, но если вы не хотите беспокоиться о версии библиотеки, вы можете сделать это:
dependencies {
compile(name:'mylibrary', ext:'aar')
}
как своего рода раздражает необходимость обновлять версию каждый раз. Также это облегчает не беспокоиться о пространстве имен.
После выполнения первого и второго шагов, упомянутых в ответе 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
Создать 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.
кстати @aar не имеет транзитивной зависимости. вам нужен параметр, чтобы включить его: транзитивные зависимости не разрешены для библиотеки aar с использованием gradle