在Android Studio中创建aar文件

我想在Android Studio中为我的库创建一个aar文件,我会使用一个jar选项,但我的库有资源。

知道如何从库中创建aar文件吗?

175292 次浏览

如果你的库被设置为Android库(即它在构建中使用apply plugin: 'com.android.library'语句)。Gradle文件),它将在构建时输出一个.aar。它将显示在模块目录中的建立/输出/ aar /目录中。

你可以选择“Android Library"输入文件>新建模块创建一个新的Android库。

如果你仍然看不到你的aar文件,选择Build > Rebuild Project

从本地构建中检索导出的.aar文件

如果你有一个定义为android库项目的模块,你会在该项目的build/outputs/aar/目录中获得所有构建风格(默认为调试和发布)的.aar文件。

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

如果这些文件不存在,则启动生成

gradlew assemble

macOS用户

./gradlew assemble

图书馆计划详情

库项目有一个包含apply plugin: com.android.librarybuild.gradle文件。为了引用这个打包为.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文件

在你的app项目中,你可以将这个.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-library-aar-across找到

关于.aar文件格式

aar文件只是一个带有可选扩展名和特定内容的.zip。详情请查看这个链接是关于aar格式的

就像用户HCPL说的,但如果你不想担心库的版本,你可以这样做:

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

因为每次都要更新版本有点烦人。此外,这样也可以更容易地避免担心名称空间的问题。

btw @aar没有传递依赖。你需要一个参数来打开它: 使用gradle无法解析aar库的传递依赖项 < / p >

在遵循Hcpl的答案在同一个帖子里中提到的第一和第二步之后,我们在our-android-app-project-based-on-gradle/app/build中添加了' *。Aar '], dir: 'libs'。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

按照以下步骤在android studio的右上方窗格转到gradle。

Gradle->Drop down library name -> tasks-> build-> assemble or assemble release

AAR将在建立/输出/ 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。

更新后的答案

在最新版本中不支持特定路径。请在库的构建中添加以下代码。Gradle和重建项目。在重建“__abc0”之后,将项目结构从Android更改为project ->导航到你的library→构建→输出→aar

android {
defaultConfig {
minSdkVersion ..
targetSdkVersion ..
versionCode ...
versionName "1"


testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
}


libraryVariants.all { variant ->
variant.outputs.all { output ->
outputFileName = "${archivesBaseName}_${variant.name}_${defaultConfig.versionName}.aar"
}

}}

导入"aar"进入项目,检查下面的链接。

如何手动包含外部aar包使用Gradle for Android .

最终得到解决方案在这里- https://stackoverflow.com/a/49663101/9640177

implementation files('libs/aar-file.aar')

<强>编辑 我有一个更复杂的问题-我为库模块设置了minifyEnabled为true

[JAR vs AAR]

.jarapply plugin: 'java-library'生成

.aarapply plugin: 'com.android.library'生成

File -> New -> New Module... -> Android Library

如果你有正确设置用于发布,那么你可以运行这个命令来生成aar文件。

 ./gradlew publishReleasePublicationToMavenLocal

这将在<module-dir>/build/output/aar目录中生成一个aar文件。

现在您也可以在其他本地项目中使用这个库。将此添加到你想在其中使用这个aar模块的项目gradle

implementation fileTree(dir: '<location-to-library>/build/outputs/aar/', include: ['*.aar', '*.jar'], exclude: [])

构建——比;构建包/ apk

.aar文件将在建立/输出/ aar文件夹中生成。