Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio中的依赖项(来自Eclipse)多个Dex文件_Android_Eclipse_Android Studio - Fatal编程技术网

Android Studio中的依赖项(来自Eclipse)多个Dex文件

Android Studio中的依赖项(来自Eclipse)多个Dex文件,android,eclipse,android-studio,Android,Eclipse,Android Studio,我正在将我所有的Android项目迁移到Android Studio中,因为使用Eclipse有点麻烦 我有几个Android库项目,它们为我的应用程序项目提供功能 想象一下: 支原体 MyClientUtils使用MyCompanyUtils MyClientApp1使用MyClientUtils MyClientApp2使用MyClientUtils “MyCompanyUtils”包含Google GSON库,因为我的所有项目都需要这个库。我的一个应用程序使用了第三方库,它在自己的jar中

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

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

想象一下: 支原体

MyClientUtils使用MyCompanyUtils

MyClientApp1使用MyClientUtils

MyClientApp2使用MyClientUtils

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

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

我环顾了安卓Studio中关于多个Dex错误的所有其他问题,但这些问题似乎都来自于控制项目中所有库的人。我不。MyCompanyUtils需要GSON,我需要在应用程序项目中使用此库


如何防止这些库冲突?

如果一个父项目使用多个库项目,则需要以不存在循环依赖关系的方式组织它们

因此,在您的情况下,您希望将其结构如下:

MyCompanyUtils->GSON

MyClientUtils->MyCompanyUtils

MyClientApp1->MyClientUtils

MyClientApp2->MyClientUtils


在这种结构下,当从MyClientUtils继承GSON库时,MyClientApp1将只包含一次

好的,所以我想做的是使用“提供的”依赖项标记,而不是“编译”标记

如果我在“MyCompanyUtils”中使用提供的标记,特别是针对GSON依赖项,它会告诉MyCompanyUtils,使用MyCompanyUtils的项目之一将包括GSON依赖项本身

想象一下:

MyCompanyUtils使用(提供)GSON

MyClientUtils使用(编译)MyCompanyUtils

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

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

由于Skobbler库包含GSON,这意味着MyClientApp2不需要手动编译它。因为MyCompanyUtils希望实现它的项目之一能够提供GSON库,所以这很好


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

你两次带同一个班来。检查你的libs文件夹并将其转换为gradle依赖项。我想你误解了我的要求(也许我解释得很糟糕)。我知道我要带两次课。我无法控制这一切。我使用的是第三方库(Skobbler),其中包括GSON库。Skobbler库需要由MyClientApp2使用,但不能由任何其他应用使用。您可以控制此功能。如果您使用的是Gradle,那么您可以包含和排除所需的依赖项。也许我没有正确解释。MyClientApp2->MyClientUtils和Skobbler。MyClientUtils使用GSON。Skobbler使用GSON。我无法控制Skobbler(第三方库)是否使用GSON。MyClientUtils也必须使用GSON。