在Android Studio中创建aar文件

216
我想在Android Studio中为我的库创建一个aar文件,如果使用jar选项,但我的库有资源文件。您知道如何从库创建aar文件吗?

这对我有用:https://developer.android.com/studio/projects/android-library - user1300214
10个回答

282

如果你的库已经配置为 Android 库(即在 build.gradle 文件中使用 apply plugin: 'com.android.library' 语句),则它在构建时会生成一个 .aar 文件。它将出现在你的模块目录下的 build/outputs/aar/ 目录中。

你可以在“文件”菜单中选择“新建模块”,然后选择“Android Library”类型来创建一个新的 Android 库。

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


3
版本号是与 AAR 包本身无关的。通常需要设置一个包含版本信息的 Maven pom 文件来进行管理。 - Scott Barta
1
我有一个aar文件在库的libs文件夹中,因此它不直接包含在build/outputs/aar/中。 - Ganesh Jogam
4
AAR 文件出现在 app/build/outputs/aar/ 文件夹中,而不是项目级别的 /build/ 文件夹中!如果找不到,请注意查看该文件夹。 - peresisUser
65
请注意,要生成我的aar文件,我必须在Android Studio中执行“Build > Rebuild Project”操作。仅仅运行、调试或构建APK无法为我生成aar文件。 - Adam Johns
13
@AdamJohns更快的方式是在终端标签页中键入./gradlew moduleName:assembleRelease - Sameer J
显示剩余2条评论

198

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

如果您将一个模块定义为Android库项目,则该项目的build/outputs/aar/目录中将获取所有构建风格(默认情况下为debug和release)的.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文件进行引用,您需要定义一些属性,例如包和版本。

示例库的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-library-aar-across

关于 .aar 文件格式

aar 文件只是一个具有其他扩展名和特定内容的 .zip 文件。有关详细信息,请参阅 有关 aar 格式的链接


12
非常出色和详细的回答。+1 对于 gradlew assemble - 那解决了我遇到的问题。 - Farbod Salamat-Zadeh
@hcpl 如何将我的Android项目转换为.aar文件。 - Ana
1
@NaveedAhmad 你试过执行 ./gradlew 吗? - hcpl
@NaveedAhmad 那么你可能是从错误的位置执行或者你的gradle配置不同。你可以尝试“locate gradlew”,但如果你找不到并执行gradlew,那么这个简短的答案对你来说并没有帮助。 - hcpl
为了后代:gradlew是位于项目顶层目录中的脚本。 - CodeClown42

14

就像用户hcpl所说的那样,但如果您不想担心库的版本,可以这样做:

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

每次更新版本都有点烦人,这样做也使得不用担心命名空间更容易。


12

创建 AAR

在创建时,请按照以下步骤进行。

文件 -> 新建 -> 新模块 -> Android Library 并创建.

生成 AAR

在 Android Studio 的顶部右侧窗格中转到 gradle,然后按照以下步骤操作

Gradle -> 下拉库名称 -> tasks -> build -> assemble 或 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")
        }
    }
}

现在它将在项目目录中创建名为“release”的文件夹,其中将包含AAR。

更新的答案

在最新版本中不支持特定路径。请在库的 build.gradle 中添加以下代码并重建项目。重建"aar"后,从Android更改项目结构到Project->导航到您的library->build->outputs->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”导入项目,请查看下面的链接。

如何使用Gradle手动包含外部aar包进行Android开发


5
在我们的Android应用程序项目的基于Gradle的app/build.gradle文件中,按照同一线程中hcpl的答案所提到的第一步和第二步,我们添加了'*.aar'],dir:'libs'如下:
...

dependencies {
       implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

...

我们的Gradle版本是com.android.tools.build:gradle:3.2.1。

3

构建 ---> 构建 bundle/apk

.aar 文件将会在 build/outputs/aar 文件夹中生成。


2

0

[JAR vs AAR]

.jar是通过应用插件apply plugin: 'java-library'生成的

.aar是通过应用插件apply plugin: 'com.android.library'生成的

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

好的,但是在我们创建一个新的模块 Android 库之后如何定位 .aar 文件呢? - Naman Jain

0
如果您已正确设置用于发布,则只需运行此命令即可生成aar文件。
 ./gradlew publishReleasePublicationToMavenLocal 

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

现在您也可以在其他本地项目中使用此库。在您想要使用此aar模块的项目gradle中添加它即可。

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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接