使用Gradle的外部Android库项目
我正在尝试用Gradle和。我希望依赖于外部(maven)存储库中的库项目,例如ActionBarSherlock 根据以下情况,这似乎是可能的: 使用库可通过以下方式之一完成: 多项目设置。请看这里: 通过回购协议(如maven或ivy)的依赖关系。 my build.gradle的当前内容:使用Gradle的外部Android库项目,android,maven,build,gradle,Android,Maven,Build,Gradle,我正在尝试用Gradle和。我希望依赖于外部(maven)存储库中的库项目,例如ActionBarSherlock 根据以下情况,这似乎是可能的: 使用库可通过以下方式之一完成: 多项目设置。请看这里: 通过回购协议(如maven或ivy)的依赖关系。 my build.gradle的当前内容: buildscript { repositories { mavenCentral() } dependencies { classpath 'c
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'
}
}
}
}
我使用的是Gradle1.2。当我尝试使用gradle assembly
构建时,出现以下错误:
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。如果删除sourceset
中的manifest
规范,仍然会得到相同的错误
该网站提到使用应用插件:“安卓图书馆”
进行图书馆项目;我猜这只是在构建实际库(使用多项目设置)时,因为这样做不会生成APK
如何使外部Android库项目依赖项正常工作?您使用的是旧版本的Android gradle插件。
在最新版本0.3中,在这方面有了很多改进 我建议你升级到这个插件的0.3版本。还要注意的是,您必须使用更新版本的gradle(1.3或1.4)
有关如何与此插件一起使用的更多信息。虽然可以通过Maven或Ivy存储库获取依赖项,但这些依赖项并没有打包在标准Jar归档中。有一种新的格式专门为这个构建系统设计。类型为“aar” Maven Central上当前可用的Android库是使用Maven插件创建的,该插件使用不同的归档格式(“apklib”),因此它们不兼容 如果您查看com.actionbarsherlock:actionbacksherlock(该库的新位置),您将看到其格式为apklib。
查看源代码,我们检查“aar”打包,并恢复将所有其他打包为“jar”处理,这显然是一个问题。我们应该检测apklib并提供更好的错误消息。您现在可以将ActionBarSherlock集成为aar 只需将其添加到build.gradle文件中的依赖项定义中:
dependencies {
compile 'com.android.support:support-v4:18.0.+'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
Jake Wharton发表了一篇文章,展示了如何将ActionBarSherlock与Gradle结合使用新的aar格式是像jar这样的编译发行版,还是像apklib这样的原始源代码压缩包?对于0.3版的插件,构建Android库项目似乎会产生aar(包含编译类和资源的存档)。在它变得更广泛之前,有没有办法让Android Gradle插件与Maven Central上现有的apklib打包库一起工作(等等)?编辑:考虑到网站上当前的信息:“库的二进制打包仍在进行更改。暂时不要将库上载到maven central(或其他类似的repo)。”aar与apklib类似,它是一个包含jar和其他文件的zip文件。支持apklib并不是真的计划好了,但我可以研究一下。@XavierDucrohet在Android Studio中有没有机会使用那个akplib文件?如果这很重要的话,我用gradle 1.10作为0.4。4@rekire现在还没有。我已经试了一段时间了!非常感谢。