添加 RoboGuice 作为依赖项时出错
Error adding RoboGuice as dependency
我正在尝试将 RoboGuice 作为我的 Android Studio 项目的依赖项进行安装。一旦我尝试 运行 项目(甚至在我添加任何新代码之前),我就会崩溃并显示以下输出:
信息:Gradle 任务 [:app:assembleDebug]
:app:preBuild 最新
:app:preDebugBuild 最新版本
:应用程序:检查调试清单
:app:preReleaseBuild 最新版本
:app:prepareComAndroidSupportAppcompatV72300Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42300Library UP-TO-DATE
:app:prepareComMcxiaokeVolleyLibraryAar100Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl 最新
:app:compileDebugRenderscript 最新
:app:generateDebugBuildConfig 最新
:app:generateDebugAssets 最新
:app:mergeDebugAssets 最新
:app:generateDebugResValues 最新
:app:generateDebugResources 最新
:app:mergeDebugResources 最新
:app:processDebugManifest 最新
:app:processDebugResources 最新
:app:generateDebugSources 最新
:app:processDebugJavaRes 最新
:应用程序:编译调试Java
注意:一些输入文件使用或覆盖已弃用的 API。
注意:使用 -Xlint:deprecation 重新编译以获取详细信息。
:app:compileDebugNdk 最新
:app:compileDebugSources
:应用程序:preDexDebug
:应用程序:dex调试
意外的顶级异常:
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)
Error:Execution 任务“: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()
}
}
我完全困惑了。谁能看到我做错了什么?谢谢
Roboguice 会将其 'own' javax.inject
作为依赖项,因此当您声明 compile 'javax.inject:javax.inject:1'
时,其中有 2 个导致
Multiple dex files define Ljavax/inject/Provider
只需删除 javax.inject
依赖项。
我正在尝试将 RoboGuice 作为我的 Android Studio 项目的依赖项进行安装。一旦我尝试 运行 项目(甚至在我添加任何新代码之前),我就会崩溃并显示以下输出:
信息:Gradle 任务 [:app:assembleDebug] :app:preBuild 最新 :app:preDebugBuild 最新版本 :应用程序:检查调试清单 :app:preReleaseBuild 最新版本 :app:prepareComAndroidSupportAppcompatV72300Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42300Library UP-TO-DATE :app:prepareComMcxiaokeVolleyLibraryAar100Library UP-TO-DATE :app:prepareDebugDependencies :app:compileDebugAidl 最新 :app:compileDebugRenderscript 最新 :app:generateDebugBuildConfig 最新 :app:generateDebugAssets 最新 :app:mergeDebugAssets 最新 :app:generateDebugResValues 最新 :app:generateDebugResources 最新 :app:mergeDebugResources 最新 :app:processDebugManifest 最新 :app:processDebugResources 最新 :app:generateDebugSources 最新 :app:processDebugJavaRes 最新 :应用程序:编译调试Java 注意:一些输入文件使用或覆盖已弃用的 API。 注意:使用 -Xlint:deprecation 重新编译以获取详细信息。 :app:compileDebugNdk 最新 :app:compileDebugSources :应用程序:preDexDebug :应用程序:dex调试 意外的顶级异常: 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) Error:Execution 任务“: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()
}
}
我完全困惑了。谁能看到我做错了什么?谢谢
Roboguice 会将其 'own' javax.inject
作为依赖项,因此当您声明 compile 'javax.inject:javax.inject:1'
时,其中有 2 个导致
Multiple dex files define Ljavax/inject/Provider
只需删除 javax.inject
依赖项。