2015-08-24 4 views
1

Я пытаюсь установить RoboGuice в качестве зависимости в моем проекте Android Studio. Как только я попытаюсь запустить проект (даже до того, как я добавил новый код), я обрушился на этот вывод:Ошибка добавления RoboGuice в качестве зависимости

Информация: Задачи подноса [: app: assembleDebug] : приложение: preBuild UP-TO- ДАТА : приложение: preDebugBuild UP-TO-DATE : приложение: checkDebugManifest : приложение: preReleaseBuild UP-TO-DATE : приложение: prepareComAndroidSupportAppcompatV72300Library UP-TO-DATE : приложение: prepareComAndroidSupportSupportV42300Library UP-TO-DATE : приложение: prepareComMcxiaokeVolleyLibraryAar100Library UP-TO-DATE : app: prepareDebugDependencies : app: compileDebugAidl UP-TO-DATE : app: compileDebugRenderscript UP-TO-DATE : Приложение: generateDebugBuildConfig UP-TO-DATE : приложение: generateDebugAssets UP-TO-DATE : приложение: mergeDebugAssets UP-TO-DATE : приложение: generateDebugResValues ​​UP-TO-DATE : Приложение: generateDebugResources UP-TO-DATE : приложение: mergeDebugResources UP-TO-DATE : приложение: processDebugManifest UP-TO-DATE : приложение: processDebugResources UP-TO-DATE : приложение: generateDebugSources UP-TO-DATE : приложение: processDebugJavaRes UP-TO-DATE : app: compileDebugJava Примечание. Некоторые входные файлы используют или переопределяют устаревший API. Примечание: перекомпиляция с -Xlint: устаревшие сведения. : Приложение: compileDebugNdk UP-TO-DATE : Приложение: compileDebugSources : приложение: preDexDebug : приложение: dexDebug НЕПРЕДУСМОТРЕННАЯ ИСКЛЮЧЕНИЕ TOP-LEVEL: com.android.dex.DexException: Несколько DEX файлы определяют Ljavax/впрыснуть/Provider ; at com.android.dx.merge.DexMerger.readSortableTypes (DexMerger.java:596) at com.android.dx.merge.DexMerger.getSortedTypes (DexMerger.java:554) at com.android.dx.merge. DexMerger.mergeClassDefs (DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeDexes (DexMerger.java:171) at 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) E rror: Execution failed for task ': app: dexDebug'.

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2 Information:BUILD FAILED Information:Total time: 10.274 secs Information:1 error Information:0 warnings Information:See complete output in console

Вот мои 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 (проект)

// 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

По какой-либо причине вы помещаете какие-либо из библиотек, указанных в 'dependencies', в папку libs? пожалуйста, разместите снимок экрана о содержимом вашей папки libs, если это возможно. –

+0

Почему вы добавили компиляцию javax.inject: javax.inject: 1 в ваши зависимости? Если imho не понадобится при использовании градиента, Roboguice должен решить эту зависимость от его собственной. – FWeigl

+0

@Ascorbin - Я играю с различными попытками инъекции зависимостей весь день. Это было перечеркнуто из более раннего подхода, но, по-видимому, является источником дублирования. Если вы предложите это в качестве ответа, я приму это. Благодаря! – Alex

ответ

1

Roboguice принесет это «собственные» javax.inject как зависимость, поэтому, когда вы объявляя compile 'javax.inject:javax.inject:1' есть 2 из них в результате

Multiple dex files define Ljavax/inject/Provider

Просто удалите javax.inject зависимость.