【问题标题】:Create aar file in Android Studio在 Android Studio 中创建 aar 文件
【发布时间】:2014-08-10 04:32:33
【问题描述】:

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

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

【问题讨论】:

标签: android android-studio jar aar


【解决方案1】:

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

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

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

【讨论】:

  • 版本控制实际上是 AAR 本身的外部。您通常会设置一个包含版本信息的 Maven pom 文件。
  • 我在库的 libs 文件夹中有一个 aar 文件,所以它没有直接包含在 build/outputs/aar/ 中
  • aar 文件出现在 app/build/outputs/aar/ 中,而不是项目级别的 /build/ 文件夹中!万一你找不到它......
  • 请注意,要生成我的aar,我必须在 Android Studio 中创建一个Build > Rebuild Project。简单地运行、调试或构建 APK 并没有为我生成 aar
  • @AdamJohns 在终端选项卡中成为./gradlew moduleName:assembleRelease 的快捷方式
【解决方案2】:

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

如果您有一个定义为 android 库项目的模块,您将在该项目的 build/outputs/aar/ 目录中获得所有构建风格(默认为调试和发布)的 .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,具有替代扩展名和特定内容。详情请查看this link about the aar format

【讨论】:

  • 精彩而详细的答案。 +1 gradlew assemble - 这解决了我遇到的问题。
  • @hcpl 如何将我的android项目转换成.aar文件
  • @NaveedAhmad 你试过了吗./gradlew
  • @NaveedAhmad 那么您可能是从错误的位置执行的,或者您的 gradle 配置不同。您可以尝试“定位 gradlew”,但如果您在查找和执行 gradlew 时遇到问题,那么这个简短的答案对您没有帮助
  • 后人:gradlew项目顶层目录中的一个脚本。
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

    创建 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”导入项目,请查看以下链接。

    How to manually include external aar package using new Gradle Android Build System

    【讨论】:

      【解决方案5】:

      按照hcpl's answer in the same thread中提到的第一步和第二步,我们在our-android-app-project-based中添加了, '*.aar'], dir: 'libs' -on-gradle/app/build.gradle 文件如下图:

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

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

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

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

          【讨论】:

            【解决方案8】:

            [JAR vs AAR]

            .jarapply plugin: 'java-library'生成

            .aarapply plugin: 'com.android.library'生成

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

            【讨论】:

            • 好的,但是我们创建一个新的模块android库后如何定位.aar?
            【解决方案9】:

            如果您有correctly set up 用于发布,那么您只需运行此命令即可生成aar 文件。

             ./gradlew publishReleasePublicationToMavenLocal 
            

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

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多