16

我正在使用新的 Android Studio,我正在寻找一种方法来使用来自多个项目的支持库。基本上我有一个项目使用ActionBarSherlock这个项目需要支持库。所以我在这个问题中添加了一个参考。

现在我遇到的问题是我的主项目也使用了支持库,所以我让它以某种方式包含了两次。如果我从两个项目之一中删除该库,我会收到一些与支持库相关的类未知的错误,这对我来说很清楚,但如果我在两个项目中都有参考,我将面临此错误:

Android Dex: [ProjectName] UNEXPECTED TOP-LEVEL EXCEPTION:
Android Dex: [ProjectName] java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ShareCompat$ShareCompatImplJB;
Android Dex: [ProjectName] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
Android Dex: [ProjectName] at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
Android Dex: [ProjectName] at com.android.dx.command.dexer.Main.processClass(Main.java:490)
Android Dex: [ProjectName] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459)
...

知道如何解决这个问题吗?

4

4 回答 4

28

我通过进入File > Project Structure...并选择Modules然后单击模块的Dependencies选项卡来解决此问题。然后在图书馆旁边,我将范围从 更改CompileProvided

这意味着模块仍然可以使用它,但它没有达到编译,因为我假设你已经在你的主项目中使用了那个 JAR。

希望这可以帮助!

于 2013-05-16T15:16:57.917 回答
1

我也遇到过类似的问题。在项目选项卡/栏/任何内容中选择actionbarsherlock(在左侧,因此您可以看到项目树)。点击F4打开模块设置。
确保您没有在 actionbarsherlock 和您的项目中两次使用相同的依赖项。
还要确保您使用的是android-studio sdk ( android-studio/sdk/extras/android) 中的支持库版本。

最后,如果您像我一样,请确保您没有意外地使 actionbarsherlock 依赖于自身,从而以这种方式两次加载库!>.<

看看这些显示我的模块偏好的图像:http: //imgur.com/a/JupWp 动作条夏洛克 在此处输入图像描述

另外,不要忘记确保libs没有隐藏任何相同的!

于 2013-05-16T15:27:50.707 回答
0

我没有将 android 支持库作为 jar 导入,而是将 build.gradle 中的库(在我的情况下为 facebook sdk)依赖项更改为:

dependencies {
    compile 'com.android.support:support-v4:13.0.0'
 }
于 2013-08-15T15:50:08.823 回答
0

这曾经是一个 Eclipse 项目吗?如果是这样,请尝试进入 Eclipse,清理项目,退出,在 IntelliJ 中重建。我相信这是一个状态问题,而不是配置问题。

于 2013-05-16T09:33:28.180 回答