我正在使用新的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)
...
知道如何解决这个问题吗?
答案 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
此外,不要忘记确保libs
没有隐藏任何相同的内容!
答案 2 :(得分:0)
这用作Eclipse项目吗?如果是这样,请尝试进入Eclipse,清理项目,退出,在IntelliJ中重建。我认为这是一个状态问题,而不是配置问题。
答案 3 :(得分:0)
我没有将jar支持库作为jar导入,而是将build.gradle中的库(在我的情况下是facebook sdk)中的依赖项更改为:
dependencies {
compile 'com.android.support:support-v4:13.0.0'
}