我一直在尝试新的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提出的语法也更简单


当前回答

你可以这样做:

将您的本地库(扩展名:.jar, .aar,…)放入“libs”文件夹(如果您愿意,也可以使用其他文件夹)。 在构建。Gradle(应用级别),将这一行添加到依赖项中 实现文件树(包括:['*.jar', '*.jar', '*.jar'。Aar '], dir: 'libs')

其他回答

在应用程序中导入AAR文件的标准方法在https://developer.android.com/studio/projects/android-library.html#AddDependency中给出

单击“File > New > New Module”。 单击“导入。jar /”。AAR包然后单击下一步。 输入已编译的AAR或JAR文件的位置,然后单击Finish。

请参考上面的链接了解下一步操作。

有两种方法:

第一种方法

打开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

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

步骤1。开放式项目结构

步骤2。开放式项目结构

步骤3。输入文件路径

完成了!

我在Android问题跟踪器中找到了这个解决方法: https://code.google.com/p/android/issues/detail?id=55863#c21

诀窍(不是修复)是将你的.aar文件隔离到子项目中,并将你的库作为工件添加:

configurations.create("default")
artifacts.add("default", file('somelib.jar'))
artifacts.add("default", file('someaar.aar'))

更多信息: Handling-transitive-dependencies-for-local-artifacts-jars-and-aar

我也有这个问题。此问题报告: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