191

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

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

4

9 回答 9

251

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

您可以在 File > New Module 中选择“Android Library”类型来创建一个新的 Android Library。

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

于 2014-06-19T21:24:24.297 回答
185

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

如果您有一个定义为 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文件的这个库,您必须定义一些属性,如包和版本。

库的示例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-跨图书馆

关于 .aar 文件格式

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

于 2014-12-19T11:23:42.297 回答
14

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

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

因为每次都必须更新版本有点烦人。此外,通过这种方式,无需担心名称空间也变得更容易。

于 2015-11-12T19:39:52.373 回答
9

创建 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 将在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。

要将“ aar ”导入项目,请查看以下链接。

如何使用新的 Gradle Android 构建系统手动包含外部 aar 包

于 2020-04-10T08:08:34.090 回答
5

在同一线程中遵循 hcpl 答案中提到的第一步和第二步之后,我们在 our-android-app-project-based-on-gradle/app/ 中添加了'*.aar'], dir: 'libs' build.gradle 文件如下所示:

...

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

...

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

于 2019-02-07T06:17:06.603 回答
2

btw @aar 没有传递依赖。你需要一个参数来打开它: Transitive dependencies notsolved for aar library using gradle

于 2016-10-16T18:58:23.060 回答
0

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

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

编辑 我还有一个复杂的问题 - 我为库模块设置了 minifyEnabled true。

于 2020-07-26T12:06:49.283 回答
0

[JAR 与 AAR]

.jarapply plugin: 'java-library'

.aarapply plugin: 'com.android.library'

File -> New -> New Module... -> Android Library
于 2021-05-30T14:42:57.707 回答
0

如果您已正确设置发布,则只需运行此命令即可生成aar文件。

 ./gradlew publishReleasePublicationToMavenLocal 

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

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

implementation fileTree(dir: '<location-to-library>/build/outputs/aar/', include: ['*.aar', '*.jar'], exclude: [])
于 2021-08-27T04:29:38.947 回答