在Android Studio中创建aar文件

时间:2014-06-19 15:07:28

标签: android android-studio jar aar

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

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

8 个答案:

答案 0 :(得分:193)

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

您可以选择" Android库"输入文件>用于创建新Android库的新模块。

答案 1 :(得分:141)

从本地版本

中检索导出的.aar文件

如果您将模块定义为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文件

在您的应用项目中,您可以将此.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,具有替代扩展名和特定内容。有关详情,请查看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 vs AAR]

.jarapply plugin: 'java-library'

生成

.aarapply plugin: 'com.android.library'

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