1

GradleビルドツールでAndroidスタジオを使用しています。依存性注入にRoboGuiceを使用しようとしています。これが私のbuilde.gradle構成です

   buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://repo1.maven.org/maven2' }

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

    apply plugin: 'android'

    repositories{
    mavenCentral()
}


    android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 16
    }
}

    dependencies {
    compile 'com.android.support:support-v4:13.0.0'
    compile 'org.roboguice:roboguice:2.0'
    compile 'com.google.inject:guice:3.0'
    compile 'com.google.code.findbugs:jsr305:1.3.9'
    compile 'com.j256.ormlite:ormlite-android:4.46'
    compile 'com.j256.ormlite:ormlite-core:4.46'
}

これらは、ビルドしようとしたときのログです

 UNEXPECTED TOP-LEVEL EXCEPTION:
    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)
4

1 に答える 1

5

roboguice は guice に依存しています (バージョン 2.0 だと思います)。コンパイルの依存関係として既に guice-3.0 があるため、この推移的な依存関係を除外する必要があります。

推移的な依存関係から Guice を除外するには、これを依存関係に入れます。

dependencies {
   ...
   compile ('org.roboguice:roboguice:2.0') {
      exclude module: 'guice'
   }
}
于 2013-09-17T20:48:08.660 に答える