在android项目和库中使用支持库(Android Studio)
Posted
技术标签:
【中文标题】在android项目和库中使用支持库(Android Studio)【英文标题】:Use support library in android projects and library (Android Studio) 【发布时间】:2013-05-11 02:53:54 【问题描述】:我正在使用新的 android Studio,我正在寻找一种方法来使用来自多个项目的支持库。基本上我有一个项目使用ActionBarSherlock
这个项目需要支持库。所以我在this question 中添加了一个参考。
现在我遇到的问题是我的主项目也使用了支持库,所以我让它以某种方式包含了两次。如果我从两个项目之一中删除该库,我会收到一些与支持库相关的类未知的错误,这对我来说很清楚,但如果我在两个项目中都有参考,我将面临此错误:
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)
...
知道如何解决这个问题吗?
【问题讨论】:
我猜你必须从旅游项目中删除 jar 并尝试。 @Raghunandan 您是否注意到这一点:"[...] 如果我从两个项目之一中删除该库,我将收到一些与支持库相关的类未知的错误[.. .]" 【参考方案1】:我通过进入File > Project Structure...
并选择Modules
然后单击模块的Dependencies
选项卡来解决此问题。然后在图书馆旁边,我将范围从Compile
更改为Provided
。
这意味着模块仍然可以使用它,但它没有达到编译,因为我假设你已经在你的主项目中使用了那个 JAR。
希望这会有所帮助!
【讨论】:
Provided 不再是 Android Studio 0.4.0 中的选项。有没有办法在 Gradle 文件中指定这种行为? @Greg 更改 compile 'source' 以提供 'source'【参考方案2】:我也遇到过类似的问题。在项目选项卡/栏/任何内容中选择actionbarsherlock
(在左侧,因此您可以看到项目树)。点击F4
打开模块设置。
确保您在 actionbarsherlock 和您的项目中没有两次使用相同的依赖项。
还要确保您使用的是 android-studio sdk (android-studio/sdk/extras/android
) 中的支持库版本。
最后,如果您像我一样,请确保您没有意外地使 actionbarsherlock 依赖于自身,从而以这种方式加载库两次! >.
看看这些显示我的模块偏好的图像: http://imgur.com/a/JupWp
另外,不要忘记确保libs
没有隐藏任何相同的!
【讨论】:
【参考方案3】:这曾经是一个 Eclipse 项目吗?如果是这样,请尝试进入 Eclipse,清理项目,退出,在 IntelliJ 中重建。我相信这是一个状态问题,而不是配置问题。
【讨论】:
我需要一小时来修复有线 Eclipse 错误。但是这不起作用。【参考方案4】:我没有将 android 支持库作为 jar 导入,而是将 build.gradle 中的库(在我的情况下为 facebook sdk)依赖项更改为:
dependencies
compile 'com.android.support:support-v4:13.0.0'
【讨论】:
以上是关于在android项目和库中使用支持库(Android Studio)的主要内容,如果未能解决你的问题,请参考以下文章
(Ruby,Rails)模块和库中SELF的上下文......?