我一直在尝试新的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 2.2)。
假设你在libs文件夹中有一个。aar文件(例如cards.aar)。
然后在应用程序构建中。指定下面的gradle文件,然后点击同步项目。
开放项目级构建。gradle和添加flatDir {dirs("libs")}如下所示:
allprojects {
repositories {
jcenter()
flatDir {
dirs("libs")
}
}
}
开放应用程序级别构建。Gradle文件和添加。aar文件:
dependencies {
implementation(name:'cards', ext:'aar')
}
如果你正在使用Kotlin并且有一个build.gradle.kts文件:
dependencies {
implementation(name = "cards", ext = "aar")
}
如果一切顺利,您将在build -> explosion -aar中看到库条目。
还要注意,如果您从另一个具有依赖关系的项目导入.aar文件,则需要在构建中包含这些依赖关系。gradle。
之前(默认)
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')