我想在Android Studio中为我的库创建一个aar文件,我会选择jar选项,但我的库有资源。
知道如何从库中创建aar文件吗?
答案 0 :(得分:193)
如果你的库被设置为Android库(即它在build.gradle文件中使用apply plugin: 'com.android.library'
语句),它将在构建时输出.aar。它将显示在模块目录的 build / outputs / aar / 目录中。
您可以选择" Android库"输入文件>用于创建新Android库的新模块。
答案 1 :(得分:141)
如果您将模块定义为android库项目,那么您将获得该项目的build/outputs/aar/
目录中所有构建版本(默认情况下为debug和release)的.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: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-library-aar-across
aar文件只是.zip
,具有替代扩展名和特定内容。有关详情,请查看this link about the aar format。
答案 2 :(得分:9)
就像用户hcpl说的那样,但是如果你不想担心库的版本,你可以这样做:
/[^a-zA-z0-9:,\s]+/
因为每次都必须更新版本而烦人。此外,这使得名称空间不再那么令人担忧。
答案 3 :(得分:4)
创建AAR
在创建时,请执行以下步骤。
File->New->New Module->Android Library and create
。
生成AAR
按照以下步骤转到android studio右上角的窗格。
Gradle->Drop down library name -> tasks-> build-> assemble or assemble release
AAR将在 build / outputs / 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")
}
}
}
现在,它将在将具有AAR的项目目录中创建名称为“ release”的文件夹。
要将“ aar ”导入项目,请检查下面的链接。
How to manually include external aar package using new Gradle Android Build System
答案 4 :(得分:2)
btw @aar没有传递依赖。你需要一个参数来打开它: Transitive dependencies not resolved for aar library using gradle
答案 5 :(得分:1)
遵循hcpl's answer in the same thread中提到的第一步和第二步之后,我们在our-android-app-project中添加了,'* .aar'],dir:'libs' -based-on-gradle / app / build.gradle文件,如下所示:
...
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
...
我们的gradle版本是com.android.tools.build:gradle:3.2.1
答案 6 :(得分:0)
最后在这里找到了解决方案-https://stackoverflow.com/a/49663101/9640177
implementation files('libs/aar-file.aar')
修改 我还有一个麻烦-我为库模块设置了minifyEnabled为真。
答案 7 :(得分:0)
.jar
由 apply plugin: 'java-library'
.aar
由 apply plugin: 'com.android.library'
File -> New -> New Module... -> Android Library