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