我正在将所有Android项目迁移到Android Studio中,因为使用Eclipse有点麻烦。

我有几个Android库项目,它们为我的应用程序项目提供功能。

试想像这样:
MyCompanyUtils

MyClientUtils使用MyCompanyUtils

MyClientApp1使用MyClientUtils

MyClientApp2使用MyClientUtils

“ MyCompanyUtils”包含Google GSON库,因为我所有的项目都需要该库。我的一个应用程序使用了第三方库,该库包含在其自己的jar中的Google GSON库。

在Eclipse中这很好,因为我要做的就是取消选中“导出Android私有库”,并且我会避免所有“多个Dex文件定义”错误。我在Android Studio中看不到这样的选项。

我到处查看了所有其他有关Android Studio中的多个Dex错误的问题,但这些问题似乎都是来自对项目中所有库具有控制权的人。我不。 MyCompanyUtils需要GSON,我需要在应用程序项目中使用此库。

如何防止这些库冲突?

最佳答案

好的,所以我想做的事可以使用“提供的”依赖项标签而不是“编译”标签来实现。

如果我在“ MyCompanyUtils”中使用提供的标签,专门用于GSON依赖项,它将告诉MyCompanyUtils,使用MyCompanyUtils的项目之一将包括GSON依赖项本身。

试想像这样:

MyCompanyUtils使用(提供)GSON

MyClientUtils使用(编译)MyCompanyUtils

MyClientApp1使用(编译)MyClientUtils,(编译)GSON

MyClientApp2使用(编译)MyClientUtils,(编译)Skobbler

由于Skobbler库包含GSON,因此这意味着MyClientApp2不需要手动进行编译。因为MyCompanyUtils期望实现它的项目之一来提供GSON库,所以可以正常工作。

现在,我还需要包括并编译MyClientApp1的GSON依赖关系,而我以前不需要这样做。再次是因为MyCompanyUtils期望实现它的项目将提供该库的编译版本。

10-07 13:52