我正在将所有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期望实现它的项目将提供该库的编译版本。