我一直在尝试新的android构建系统,我遇到了一个小问题。我已经编译了我自己的ActionBarSherlock的aar包,我称之为' ActionBarSherlock .aar'。我想做的是用这个aar来构建我最终的APK。如果我包括整个ActionBarSherlock库作为一个android-library模块到我的主项目使用编译项目(':ActionBarSherlock '),我能够成功地构建没有任何问题。

但我的问题是,我想手动提供一个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"
}

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

编辑:目前这仍然不直接支持,最好的替代方案似乎是@RanWakshlak提出的解决方案

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


当前回答

有两种方法:

第一种方法

打开Android Studio,通过文件->新建->新建模块导航到创建新模块窗口

选择Import . jar /。AAR Package项并单击Next按钮 在构建中添加依赖项。属于你的app模块的Gradle文件。

    dependencies {
        ...
        implementation project(path: ':your aar lib name')
    }

这是所有。

第二种方法

在libs目录下创建一个文件夹,例如aars。 把你的aar lib放到aars文件夹中。 添加代码片段

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

进入你的构建。Gradle文件属于app模块。

在构建中添加依赖项。属于你的app模块的Gradle文件。

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

这是所有。

If you can read Chinese, you can check the blog. What are AAR files and how can they be used in Android development

其他回答

不幸的是,这里的解决方案都不适合我(我无法解决依赖关系)。最后工作,是最简单的方法IMHO是:突出项目名称从Android工作室然后文件->新模块->导入JAR或AAR包。这篇文章的功劳归于解决方案

为了简化答案

如果.aar文件在本地存在,则包含 编译项目(':project_directory')在build的依赖。Gradle你的项目。

如果.aar文件存在于远程,则包含 编译'com.*********.sdk:project_directory:0.0.1@aar'在build的依赖项中。Gradle你的项目。

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

    repositories {
      mavenCentral()
      flatDir {
        dirs 'libs'
      }
    }

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

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

你可以查看闵安的博客文章获取更多信息。

还有一种方法。

通常。aar文件不应该像我们使用.jar那样直接使用,因此上面提到的在libs文件夹中提到它并在gradle中声明的解决方案是可以避免的。

步骤1:解包.aar文件(可以通过将扩展名重命名为“。Aar "到".zip")

步骤2:解压后,您很可能会在文件夹中找到.jar文件。复制这个.jar文件并将其粘贴到module/libs文件夹中

第三步:就是这样,现在同步你的项目,你应该能够从那个.jar中访问所有的类/方法/属性。你不需要在任何gradle文件中提到它的路径/名称/存在,这是因为gradle构建系统在构建项目时总是寻找存在于libs文件夹中的文件

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

步骤1。开放式项目结构

步骤2。开放式项目结构

步骤3。输入文件路径

完成了!