【问题标题】:Multi dex files define Lcom/google/gdata/util/common/base/Escaper多 dex 文件定义 Lcom/google/gdata/util/common/base/Escaper
【发布时间】:2014-11-29 19:35:19
【问题描述】:

Multi dex files define Lcom/google/gdata/util/common/base/Escaper

我被上述错误困住了。将依赖项添加到 UserVoice SDK 后发生的错误

compile 'com.uservoice:uservoice-android-sdk:+'

由于我添加了这个依赖项,我无法运行我的 Android 项目。

我已经阅读了有关 jarjar 命令可能可以解决此问题的信息。但由于依赖项是 .aar 库,我不知道可能的解决方案是什么

非常感谢任何帮助

其他依赖列表:

 compile('com.crashlytics.sdk.android:crashlytics:2.1.0@aar') {
        transitive = true;
    }
    compile('com.twitter.sdk.android:twitter:1.1.0@aar') {
        transitive = true;
    }
    compile 'com.android.support:support-v4:21.0.0'
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.google.android.gms:play-services-wearable:+'
    compile 'com.github.manuelpeinado.fadingactionbar:fadingactionbar-abc:3.1.2'
    compile 'com.squareup.retrofit:retrofit:1.7.1'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
    compile 'com.squareup.okhttp:okhttp:2.0.0'
    compile 'com.jakewharton:butterknife:5.1.2'
    compile 'com.squareup.picasso:picasso:2.3.4'
    compile 'com.melnykov:floatingactionbutton:1.0.5'
    compile 'com.balysv.materialmenu:material-menu-abc:1.+'
    compile 'de.keyboardsurfer.android.widget:crouton:1.8.5@aar'
    compile 'com.facebook.android:facebook-android-sdk:3.20.0'
    compile 'com.joanzapata.android:android-iconify:1.0.8'
    compile 'com.squareup:otto:1.3.5'
    compile 'com.android.support:recyclerview-v7:21.+'
    compile 'com.android.support:cardview-v7:21.+'

Gradle 依赖pastebin:http://pastebin.com/0m6b8Wyi

【问题讨论】:

  • 你总是可以使用类型搜索...我知道在 Eclipse 中它的 Ctrl+Shift+T,我认为在 Android Studio 中它的 Ctrl+N乙>。在 Eclipse 中,它还向您显示了重复的 jar 来源......虽然不确定 Android Studio

标签: android gradle uservoice


【解决方案1】:

您遇到的问题是由于您有两个依赖项,其中包括 Escaper 类。这些很可能是您的依赖项的依赖项,因此哪个包含该类并不明显。您可以确定com.uservoice:uservoice-android-sdk:+ 包含Escaper 类,因为这是您发生错误的时候。

您可以通过从您的编译依赖项之一中排除该依赖项来解决此问题。看看Gradle docs 并向下滚动到它谈论“排除传递依赖”的地方。需要注意的一件事是依赖项可能是不同的版本,但包含相同的类。您应该确认两个库都可以使用相同版本的 Escaper 类。

【讨论】:

  • 我如何确定哪个依赖项正在使用 Escaper?
  • 你可以使用命令“gradlew dependencies”列出你项目的所有依赖。从该输出中,您可以找到需要排除的一个依赖项。这不会仅列出整个依赖项的确切类。您通常可以谷歌完全限定的类名并找出它是哪个包的一部分。如果我不得不猜测,我会说它可能是番石榴的一部分。
  • 我已经运行了 depencies 命令,但我无法确定问题所在,也许你可以看看?检查问题中的pastebin。你是对的,Escaper 是番石榴的一部分。但是我的依赖项都不依赖于 Guava。而且我也不在我的应用中使用它
猜你喜欢
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 2016-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-25
相关资源
最近更新 更多