将RoboGuice添加为依赖项

时间:2015-08-24 18:58:42

标签: android android-studio gradle roboguice

我试图在我的Android Studio项目中安装RoboGuice作为依赖项。一旦我尝试运行项目(甚至在我添加任何新代码之前),我就崩溃了这个输出:

信息:Gradle任务[:app:assembleDebug] :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :应用:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72300Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42300Library UP-TO-DATE :app:prepareComMcxiaokeVolleyLibraryAar100Library UP-TO-DATE :应用:prepareDebugDependencies :app:compileDebugAidl UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE :app:generateDebugBuildConfig UP-TO-DATE :app:generateDebugAssets UP-TO-DATE :app:mergeDebugAssets UP-TO-DATE :app:generateDebugResValues UP-TO-DATE :app:generateDebugResources UP-TO-DATE :app:mergeDebugResources UP-TO-DATE :app:processDebugManifest UP-TO-DATE :app:processDebugResources UP-TO-DATE :app:generateDebugSources UP-TO-DATE :app:processDebugJavaRes UP-TO-DATE :应用:compileDebugJava 注意:某些输入文件使用或覆盖已弃用的API。 注意:使用-Xlint重新编译:弃用以获取详细信息。 :app:compileDebugNdk UP-TO-DATE :应用:compileDebugSources :应用:preDexDebug :应用:dexDebug 意外的顶级例外情况: com.android.dex.DexException:多个dex文件定义Ljavax / inject / Provider;     在com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)     在com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)     在com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)     在com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)     在com.android.dx.merge.DexMerger.merge(DexMerger.java:189)     在com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)     在com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)     在com.android.dx.command.dexer.Main.run(Main.java:246)     在com.android.dx.command.dexer.Main.main(Main.java:215)     在com.android.dx.command.Main.main(Main.java:106) 错误:任务':app:dexDebug'。

的执行失败
  

com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:Process' command' /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents /首页/斌/ java的''完成非零退出值2   信息:建筑失败   信息:总时间:10.274秒   信息:1错误   信息:0警告   信息:请参阅控制台中的完整输出

以下是我的gradle文件:

build.gradle(模块)     申请插件:' com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.mysite.myapp"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'javax.inject:javax.inject:1'
    compile 'org.roboguice:roboguice:3.+'
}

build.gradle(project)

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}

我完全感到困惑。谁能看到我做错了什么?感谢。

1 个答案:

答案 0 :(得分:1)

Roboguice会将它自己的'javax.inject作为依赖项,因此当您声明compile 'javax.inject:javax.inject:1'时,其中有2个会导致

  

多个dex文件定义Ljavax / inject / Provider

只需删除javax.inject依赖项。