我正在尝试了解来自 Eclipse 和 Ant 的 Android Studio/Gradle 构建系统。特别是,我不明白 dependencies
阻止我的build.gradle
文件有效。
我当前的项目具有以下结构:
在我的项目中,我同时使用了 android 支持库 (v4) 和 jxl 电子表格库。我的 build.gradle
(子模块内的那个,不是根级别的)当前看起来像这样:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "18.1.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
buildTypes {
release {
runProguard true
proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
}
}
productFlavors {
defaultFlavor {
proguardFile 'proguard-rules.txt'
}
}
}
dependencies {
compile 'net.sourceforge.jexcelapi:jxl:2.6.+'
compile 'com.android.support:support-v4:13.0.+'
//compile fileTree(dir: 'libs', include: '*.jar')
}
在倒数第二行,您可以看到我尝试使用
android-support-v4.jar
的本地副本和 jxl.jar
.我也尝试过使用这些线条compile files('libs/android-support-v4.jar')
compile files('libs/jxl.jar')
但是,每当我尝试使用本地 .jar 文件时,我的构建都会失败,说找不到 Android 支持和 jxl 库。我看过很多帖子说你可以像这样简单地使用本地 .jar,但是我无法让它工作。如果可能,我希望能够使用本地存储的 .jar 文件,以便在 Maven 不可用时可以离线工作。
谁能告诉我为什么使用本地 .jar 文件不起作用?
编辑:我还尝试重新启动 Android Studio IDE,并在添加本地 jar 依赖行后清理和重新构建我的项目。
最佳答案
它没有找到 libs 目录,因为它需要位于模块根目录而不是 src/main 中。 build.gradle 中的路径与 build.gradle 文件的位置相关,该文件位于模块根目录中。
对于 Android 支持库,我建议使用 Maven 依赖项(例如 compile 'com.android.support:support-v4:13.0.+'
)而不是包含 jar 文件。借助支持库,Android Gradle 插件实际上会在您的 SDK 中查找它,而不是通过网络查找它;您必须通过 SDK 管理器安装支持存储库。这实际上有点令人困惑,并且因为没有很好的文档记录而绊倒了很多用户。但是,如果您以这种方式访问它而不是仅包含 JAR,那么构建系统可以更聪明地避免尝试包含它的重复副本,如果您包含依赖它的其他库项目,则会导致错误。
关于maven - Android Gradle 依赖项 - 只有 Maven?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20183340/