我正在尝试使用 Gradle 和Android Gradle 插件构建一个 Android 项目。我想依赖在外部(maven)存储库中找到的库项目,例如 ActionBarSherlock。
根据官方网站,这似乎是可能的:
使用库是通过以下方式之一完成的:
多项目设置。在这里阅读:http: //www.gradle.org/docs/current/userguide/multi_project_builds.html
通过诸如 maven 或 ivy 之类的 repo 进行依赖。
我的 build.gradle 的当前内容:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.2'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
compile 'com.actionbarsherlock:library:4.2.0'
}
android {
target = 'android-16'
sourceSets {
main {
manifest {
srcFile 'AndroidManifest.xml'
}
java {
srcDir 'src'
}
res {
srcDir 'res'
}
assets {
srcDir 'assets'
}
resources {
srcDir 'src'
}
}
}
}
我正在使用 Gradle 1.2。当我尝试使用 构建时gradle assemble
,我收到以下错误:
Error: duplicate files during packaging of APK /[path to project]/build/apk/[project name]-debug-unaligned.apk
Path in archive: AndroidManifest.xml
Origin 1: /[path to project]/build/libs/[apk name]-debug.ap_
Origin 2: /[home directory]/.gradle/caches/artifacts-14/filestore/com.actionbarsherlock/actionbarsherlock/4.2.0/apklib/dd63451a922558005d8c10be1085b488ed731d19/actionbarsherlock-4.2.0.apklib
:packageDebug FAILED
似乎它正在尝试从库项目和我的项目中包含 AndroidManifest.xml。如果我删除 中的manifest
规范sourceSets
,我仍然会收到相同的错误。
该网站提到apply plugin: 'android-library'
用于图书馆项目;我猜这只是在构建实际库(使用多项目设置)时,因为这样做不会产生 APK。
如何让外部 Android 库项目依赖项工作?