在android项目和库中使用支持库(Android Studio)

时间:2013-05-16 09:24:00

标签: android actionbarsherlock android-support-library android-studio

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

现在我遇到的问题是我的主项目也使用了支持库,所以我在某种程度上包含了两次。如果我从其中一个项目中删除了库,我会得到一些错误,一些支持库相关的类是未知的,这对我来说很明显,但如果我在两个项目中都有引用,我将面临这个错误:< / p>

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 个答案:

答案 0 :(得分:28)

我通过进入File > Project Structure...并选择Modules来修复此问题,然后点击模块的Dependencies标签。然后在库的旁边,我将范围从Compile更改为Provided

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

希望这有帮助!

答案 1 :(得分:1)

我遇到了类似的问题。在项目选项卡/栏/中选择actionbarsherlock(在左侧,这样您就可以看到项目树)。点击F4打开模块设置 确保您在actionbarsherlock和项目中没有使用相同的依赖关系
另外,请确保您使用的是 android-studio sdk android-studio/sdk/extras/android)中的支持库版本。

最后,如果你像我一样,请确保你没有意外地使actionbarsherlock依赖于它自己,因此加载库两次! &GT;。&LT;

看看这些图像显示我的模块首选项: http://imgur.com/a/JupWp Actionbar Sherlock enter image description here

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

dependencies {
    compile 'com.android.support:support-v4:13.0.0'
 }