在Android Studio中创建AAR文件


173

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

任何想法如何从库中创建aar文件?

Answers:


225

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

您可以在“文件”>“新模块”中选择“ Android库”类型,以创建新的Android库。


3
版本控制实际上是AAR本身的外部。通常,您将设置一个具有版本信息的Maven pom文件。
斯科特·巴塔

1
我在库的libs文件夹中有一个aar文件,因此它不直接包含在build / outputs / aar /中
Ganesh Jogam,2016年

4
aar文件出现在app / build / outputs / aar /中,而不是在项目级别的/ build /文件夹中!万一您找不到它...
peresisUser 2016年

29
请注意,要生成我的aar,我必须Build > Rebuild Project在Android Studio中执行。简单地运行,调试或构建APK并不会aar为我生成。
亚当·约翰斯

8
@AdamJohns更快的方法是./gradlew moduleName:assembleRelease在终端选项卡中
Sameer J

158

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

如果您将模块定义为android库项目,则将在该build/outputs/aar/项目的目录中获取所有构建版本(默认情况下为调试和发布)的.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文件的库,您必须定义一些属性,例如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文件

在您的应用程序项目中,您可以使用以下示例将此.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格式的此链接


11
精彩而详尽的答案。+1- gradlew assemble解决了我遇到的问题。
Farbod Salamat-Zadeh,2013年

@hcpl如何将我的android项目转换为.aar文件
安娜

1
@NaveedAhmad您是否尝试过./gradlew
hcpl

@NaveedAhmad,那么您可能是从错误的位置执行的,或者您的gradle配置不同。您可以尝试“定位gradlew”,但实际上,如果您在查找和执行gradlew时遇到问题,那么这个简短的答案将无济于事
hcpl

为了后代:gradlew项目顶层目录中的脚本。
CodeClown42 '18年

11

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

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

每次都必须更新版本,这很烦人。同样,这也使得不用担心名称空间变得更容易。


5

同一线程中执行hcpl的答案中提到的第一步和第二步之后,我们在our-android-app-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


3

创建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")
        }
    }
}

现在它将在具有AAR的项目目录中创建名称为“ release”的文件夹。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.