Tôi đang cố gắng di chuyển một dự án IntelliJ cũ để sử dụng gradle. Tuy nhiên, assembleDebug không thành công trong bước dx:Gradle và nhiều dự án với sự phụ thuộc Roboguice
java.lang.IllegalArgumentException: already added: Lcom/google/inject/AbstractModule;
at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
at com.android.dx.command.dexer.Main.processClass(Main.java:490)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459)
at com.android.dx.command.dexer.Main.access$400(Main.java:67)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
at com.android.dx.command.dexer.Main.processOne(Main.java:422)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333)
at com.android.dx.command.dexer.Main.run(Main.java:209)
at com.android.dx.command.dexer.Main.main(Main.java:174)
at com.android.dx.command.Main.main(Main.java:91)
Dự án của tôi được chia thành hai tiểu dự án: dự án chính và dự án thư viện. Cả hai dự án này đều có Roboguice và Guice là phụ thuộc.
Tôi đã thử cách giải quyết được đề xuất của Xav để bao gồm thư viện hỗ trợ trong nhiều dự án như đã đề cập in this answer. Cách giải quyết có thể thậm chí không cần thiết, cho rằng roboguice/guice đều được chọn từ trung tâm maven. Tôi tạo ra một dự án thư viện giả là dự án duy nhất phụ thuộc vào roboguice/guice. Tôi đã thực hiện nó để dự án chính của tôi và dự án thư viện (đúng) đều phụ thuộc vào dự án giả này. Tuy nhiên, tôi nhận được cùng một lỗi.
Làm cách nào để khắc phục sự cố này?
settings.gradle trong thư mục gốc:
include 'MainApp'
include 'library'
include 'common-library'
build.gradle trong thư mục gốc:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.2'
}
}
allprojects {
version = '1.0'
repositories {
mavenCentral()
}
}
apply plugin: 'android-reporting'
build.gradle trong dự án chính và thực dự án thư viện:
apply plugin: 'android'
android {
compileSdkVersion 15
buildToolsVersion "17.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
}
}
}
dependencies {
compile project(':library') // only in main, not in real library
compile project(':common-library')
}
build.gradle trong dự án thư viện giả:
apply plugin: 'android-library'
android {
compileSdkVersion 15
buildToolsVersion "17.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
}
}
}
dependencies {
compile 'org.roboguice:roboguice:2.0'
compile 'com.google.inject:guice:3.0'
}
Cảm ơn, mà làm việc. Không hoàn toàn nhớ tại sao tôi cảm thấy tôi cần phải thêm guice vào phụ thuộc. – Hrushikesh