我正在嘗試使用Gradle和Android Gradle plugin構建Android項目。我想依賴外部(maven)存儲庫中的庫項目,例如ActionBarSherlock。Gradle外部Android庫項目
這根據official site似乎是可能的:
Using a library is done one of the following way:
Multi-project setup. Read here: http://www.gradle.org/docs/current/userguide/multi_project_builds.html
Dependencies through a repo such as maven or ivy.
我的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'
}
}
}
}
我使用的搖籃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中。如果我刪除sourceSets
中的manifest
規範,我仍然會得到相同的錯誤。
該網站提到使用apply plugin: 'android-library'
爲圖書館項目;我猜這只是在構建實際庫(使用多項目設置)時才這樣做的,因爲這樣做不會生成APK。
如何獲得外部Android庫項目依賴性的工作?
是新AAR格式編譯分佈狀jar或其他原始的zip文件,如apklib? – yorkw 2013-03-13 03:31:40
使用插件的0.3版本,似乎構建一個Android庫項目會生成一個AAR(帶有編譯類和資源的存檔)。除非它更廣泛,否則有一種方法可以讓Android Gradle插件與Maven Central(等)上的現有apklib打包庫一起使用?編輯:考慮到網站上的當前消息,這將特別有用:「圖書館的二進制包裝仍在經歷變化,不要將圖書館上傳到maven central(或其他類似的回購)。」 – antonyt 2013-03-13 03:56:35
aar與apklib類似,它是一個包含jar +其他文件的zip文件。支持apklib並不是真的計劃,但我可以研究它。 – 2013-03-13 04:51:51