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


当前回答

之前(默认)

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

只要加上“*”。包含数组中的Aar '。

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

它在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')

其他回答

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

之前(默认)

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

只要加上“*”。包含数组中的Aar '。

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

它在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')

对我来说,这是Android Studio环境配置的问题。

当我更新文件->项目结构-> JDK位置到一个更高的Java版本(jdk1.8.0_192。JDK -对我来说),一切都开始工作了。

在Android Studio 3.4和Gradle 5中,你可以简单地这样做

dependencies {
    implementation files('libs/actionbarsherlock.aar')
}

我只是简单地加上这几行:-

在build.gradle

buildscript {
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

and

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

之后,点击文件->同步项目与Gradle文件

注意:-最重要的是不要忘记在libs文件夹中导入。aar文件