如何使用新的Gradle Android Build System手动包含外部aar包

Mig*_*gne 379 android gradle build.gradle android-gradle-plugin

我一直在尝试新的Android构建系统,我遇到了一个小问题.我已经编译了自己的ActionBarSherlock的aar包,我称之为'actionbarsherlock.aar'.我正在尝试做的实际上是使用这个aar来构建我的最终APK.如果我使用编译项目(':actionbarsherlock')将整个ActionBarSherlock库作为android-library模块包含到我的主项目中,我可以成功构建而没有任何问题.

但我的问题是,我想将该依赖项作为aar文件包手动提供,如果我想要一个JAR,那么我似乎无法弄清楚如何正确地将它包含到我的项目中.我试图使用编译配置,但这似乎不起作用.我继续在编译期间找不到符号,这告诉我来自aar包的classes.jar没有包含在类路径中.

有谁知道手动将aar包作为文件包含的语法?

的build.gradle

buildscript {

 repositories {
     mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:0.4'
  }
}
apply plugin: 'android'

repositories {
   mavenCentral()
}
dependencies {
    compile files('libs/actionbarsherlock.aar')
}

android {
    compileSdkVersion 15
    buildToolsVersion "17.0"
}
Run Code Online (Sandbox Code Playgroud)

编辑:所以答案是它目前不支持,如果你想跟踪它,这是问题.

编辑:目前仍然没有直接支持,最好的替代方案似乎是来自@RanWakshlak的建议解决方案

编辑:使用@VipulShah提出的语法也更简单

Vip*_*hah 640

请按照以下步骤使其正常运行(我已将其测试到Android Studio 2.2)

让我们说你已经在libs文件夹中保存了aar文件.(假设文件名是cards.aar)

然后在应用程序中build.gradle指定以下内容并单击与Gradle文件同步项目.打开项目级build.gradle并添加flatDir{dirs 'libs'}如下所示

allprojects {
   repositories {
      jcenter()
      flatDir {
        dirs 'libs'
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

现在打开app level build.grdle文件并添加.aar文件

    dependencies {
       compile(name:'cards', ext:'aar')
}
Run Code Online (Sandbox Code Playgroud)

如果一切顺利,您将看到库条目在build - > explosion-aar中进行

另请注意,如果要从具有依赖项的其他项目导入.aar文件,则还需要在build.gradle中包含这些文件.

  • 请更新您的答案:警告:配置“编译”已过时,并已由“实现”和“ api”代替。它将在2018年底删除。有关更多信息,请参见:http://d.android.com/r/tools/update-dependency-configurations.html (6认同)
  • @VipulShah libs目录在哪里? (5认同)
  • 找到上面我的问题的答案:而不是`compile`依赖添加两个依赖`debugCompile(名称:'cards-debug',ext:'aar')`和`releaseCompile(名称:'cards-release',ext:' AAR")` (3认同)
  • 也许应该建议在app模块'build.gradle'中进行修改,而不是在top文件夹'build.gradle'中. (2认同)
  • 不要与示例代码混淆.带有`allprojects {...}`的第一个块进入"project"级别gradle文件,带有`dependencies {...}`的第二个部分应该进入"app"级gradle文件. (2认同)

Oli*_*anz 238

  1. 右键单击您的项目,然后选择"打开模块设置".

打开模块设置

  1. 单击窗口左上角的"+"按钮添加新模块.

添加新模块

  1. 选择"导入.JAR或.AAR包",然后单击"下一步"按钮.

导入AAR

  1. 使用"文件名"字段旁边的省略号按钮"..."查找AAR文件.

找到AAR文件

  1. 保持选择应用程序模块,然后单击" 依赖关系"窗格以将新模块添加为依赖项.

依赖关系窗格

  1. 使用依赖项屏幕的"+"按钮,然后选择"模块依赖项".

添加模块依赖

  1. 选择模块,然后单击"确定".

选择模块

  • import .jar/.aar 包已从 android studio 4.2 中的添加模块中删除,并移至项目结构对话框:https://developer.android.com/studio/projects/android-library#psd-add-aar-jar-dependency (5认同)
  • 最佳答案,请记住,使'Alt + B`>清理并重建项目.Android Studio为什么你很痛苦!我希望将NetBeans IDE作为Android Developer Platform (4认同)
  • 每次只想在项目中添加一些 `aar` 库时,创建一个新模块并不是最好的主意 (4认同)
  • 在最新的 Android Studio (V4.1) 中,“模块依赖项”选项已从弹出菜单中删除 (4认同)
  • 任何基于 GUI 的方法都单击此,而 GUI 单击不基于科学方法。这不起作用 (2认同)

小智 104

您可以从存储库引用aar文件.Maven是一个选项,但有一个更简单的解决方案:将aar文件放在libs目录中并添加目录存储库.

    repositories {
      mavenCentral()
      flatDir {
        dirs 'libs'
      }
    }
Run Code Online (Sandbox Code Playgroud)

然后在依赖项部分中引用库:

  dependencies {
        implementation 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}

Run Code Online (Sandbox Code Playgroud)

您可以查看Min'an博客文章了解更多信息.

  • 在这个答案中最重要的一点是在依赖结束时提到'@aar'. (4认同)

ash*_*oke 47

以下方法适用于最新的Android studio(> v0.8.x):

  • 保存aar在应用程序模块的文件libs夹(如:<project>/<app>/libs/myaar.aar)

  • 将以下内容添加到"app"模块文件夹(而不是项目根build.gradle)的build.gradle中.注意编译行中的名称,它是myaar @ aar而不是myaar.aar.

    dependencies {
        compile 'package.name.of.your.aar:myaar@aar'
    }
    
    repositories{
        flatDir{
            dirs 'libs'
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 点击 Tools -> Android -> Sync Project with Gradle Files

  • 在AS 1.0上完美运行 (3认同)

sus*_*i99 36

前(默认)

implementation fileTree(include: ['*.jar'], dir: 'libs')
Run Code Online (Sandbox Code Playgroud)

只需添加'*.aar'include阵列.

implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
Run Code Online (Sandbox Code Playgroud)

它在Android Studio 3.x上运行良好.

如果你想忽略一些图书馆?这样做.

implementation fileTree(include: ['*.jar', '*.aar'], exclude: 'test_aar*', dir: 'libs')
debugImplementation files('libs/test_aar-debug.aar')
releaseImplementation files('libs/test_aar-release.aar')
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可能会回答问题,但提供有关 **how** 和/或 **why** 解决问题的附加上下文将提高​​答案的长期价值。 (2认同)

Art*_*aru 20

目前不支持引用本地.aar文件(由Xavier Ducrochet确认)

您可以做的是设置一个本地Maven存储库(比听起来简单得多)并从那里引用.aar.

我写了一篇博客文章详细介绍了如何让它在这里工作:

http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds


Orh*_* D. 20

我刚刚成功了!

  1. mylib-0.1.aar文件复制到libs /文件夹中

  2. 将这些行添加到build.gradle的底部(应该是app,而不是project):

    repositories {
       flatDir {
           dirs 'libs'
       }
    }
    dependencies {
        compile 'com.example.lib:mylib:0.1@aar'
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 到现在为止还挺好.这是最重要的一点:

除非启用了脱机模式,否则Gradle需要访问网络以获取依赖关系.

通过Project Structures/Gradle中的复选框确保已启用离线工作

- 要么 -

配置代理设置以访问网络.

要配置代理设置,您必须修改项目的gradle.properties文件,单独配置http和https,如下所示:

systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=user
systemProp.http.proxyPassword=pass
systemProp.http.nonProxyHosts=localhost
systemProp.http.auth.ntlm.domain=example <for NT auth>

systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=user
systemProp.https.proxyPassword=pass
systemProp.https.nonProxyHosts=localhost
systemProp.https.auth.ntlm.domain=example <for NT auth>
Run Code Online (Sandbox Code Playgroud)

希望这有效.


mix*_*xel 18

您可以aar使用几行代码添加多个依赖项.

添加本地flatDir存储库:

repositories {
    flatDir {
        dirs 'libs'
    }
} 
Run Code Online (Sandbox Code Playgroud)

每添加aarlibs目录compile依赖配置:

fileTree(dir: 'libs', include: '**/*.aar')
        .each { File file ->
    dependencies.add("compile", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar'])
}
Run Code Online (Sandbox Code Playgroud)


sha*_*nwu 16

使用 Android Studio Arctic Fox 手动导入 AAR 文件

步骤1.打开项目结构
在此输入图像描述

步骤 2. 打开项目结构
在此输入图像描述

步骤 3. 输入文件路径
在此输入图像描述

完毕!


Non*_*nos 14

不幸的是,这里没有一个解决方案适用于我(我得到了未解决的依赖关系).最终工作的是IMHO最简单的方法:从Android Studio突出显示项目名称,然后选择File - > New Module - > Import JAR或AAR Package.信用转到这篇文章中的解决方案


Tar*_*n A 14

在应用级别 build.gradle 中添加以下行

  implementation fileTree(dir: "libs", include: ["*.aar"])
Run Code Online (Sandbox Code Playgroud)

将项目结构从 Android 更改为 Project。

导航到app->libs如下

在此处输入图片说明

然后将“aar”粘贴到 libs 文件夹中。

单击android studio 左上角的File,然后单击“Sync Project with Gradle Files”,如下所示。

在此处输入图片说明

就是这样。

  • kts 文件的 `implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar"))))` (5认同)

Álv*_*ero 11

更新安卓工作室 3.4

  1. 转到文件->项目结构

在此处输入图片说明

  1. 模块并单击+

在此处输入图片说明

  1. 选择导入.aar包

在此处输入图片说明

  1. 查找 .aar 路由

在此处输入图片说明

  1. 完成应用,然后验证是否添加了包

在此处输入图片说明

  1. 现在在应用程序模块中,单击+Module Dependency

在此处输入图片说明

  1. 检查库包并确定

在此处输入图片说明

  1. 验证添加的依赖项

在此处输入图片说明

  1. 和这样的项目结构

在此处输入图片说明

  • 这是我读到的第 17 个答案,最后添加了依赖项.. eeh (2认同)

Ili*_*hin 9

如果您使用Gradle Kotlin DSL,则需要在模块目录中添加一个文件

例如:libs/someAndroidArchive.aar

在依赖块中的模块 build.gradle.kts 中写入此内容后:

implementation(files("libs/someAndroidArchive.aar"))
Run Code Online (Sandbox Code Playgroud)


小智 8

有两种方式:

  • 第一种方式

1:打开Android Studio并通过File-> New-> New Module导航到"Create New Module"窗口......

在此输入图像描述

2:选择"导入.JAR/.AAR包"项,然后单击下一步按钮

3:在build.gradle属于appModlue的文件中添加依赖项.

implementation project(path: ':your aar lib name')
Run Code Online (Sandbox Code Playgroud)

那一切.

  • 第二种方式

1在libs目录中创建一个文件夹,例如aars.

2将您的aar lib放入aars文件夹.

3添加代码段

repositories { flatDir { dirs 'libs/aars' } }

进入你的build.gradle文件属于app模块.

4在build.gradle属于appModlue的文件中添加依赖项.

dependencies { ... compile(name:'your aar lib name', ext:'aar') }

那一切

如果你能读懂中文,你可以查看博客什么是AAR文件以及如何在Android开发中使用


小智 6

我也遇到过这个问题.此问题报告:https://code.google.com/p/android/issues/detail? id = 55863似乎建议不支持直接引用.AAR文件.

也许现在的替代方法是将actionbarsherlock库定义为项目的父目录下的Gradle库并相应地引用.

语法在这里定义http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library


m0s*_*it0 5

使用Android Studio 3.4和Gradle 5,您可以像这样简单地进行操作

dependencies {
    implementation files('libs/actionbarsherlock.aar')
}
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案。依赖关系是明确且非常简单的。 (2认同)
  • 同意这是最佳答案。立即生效,非常适合将 .aar 依赖项添加到 React Native 库。 (2认同)
  • 这会从 gradle 插件 4 开始引发错误:/sf/ask/4261501961/ (2认同)

归档时间:

查看次数:

294028 次

最近记录:

5 年,11 月 前