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

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


当前回答

创建AAR

在创建时遵循以下步骤。

文件->新建->新建模块->Android库并创建。

生成AAR

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

Gradle->下拉库名称->任务->构建->组装或组装释放

AAR将在build/outputs/ AAR /中生成

但如果我们想要在项目目录中的特定文件夹中生成AAR,请修改您的应用程序级别构建。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和重建项目。重建“aar”后,将项目结构从Android更改为项目->导航到您的库->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”导入项目,请检查下面的链接。

如何手动包括外部aar包使用Gradle为Android

其他回答

顺便说一句,@aar没有传递依赖。你需要一个参数来打开它: 使用gradle无法解析aar库的传递依赖项

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

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

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

[JAR vs AAR]

.jar由apply plugin: 'java-library'生成

.aar是由apply 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: [])

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

...

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

...

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