将使用相同库项目的多个 Eclipse 项目导入到 Android Studio 而不会以重复模块结束?

Import multiple Eclipse projects using the same library projects to Android Studio without ending up with duplicate modules?

我的 Eclipse 项目结构如下所示:

MyApplicationProject1
MyApplicationProject2
MyApplicationProject3
MyLibraryProject
MyLibraryProject1
MyLibraryProject2
MyLibraryProject3

每个应用程序项目使用 MyLibraryProject,后者又使用其他三个库项目。

将这些项目导入 Android Studio 时,起初似乎按预期工作。直到我查看 Android Studio project/module 文件夹。天哪,真是一团糟,我现在得到的文件结构看起来像这样:

MyApplicationProject1
   myApplicationProject1
   myLibraryProject
   myLibraryProject1
   myLibraryProject2
   myLibraryProject3

MyApplicationProject2
   myApplicationProject2
   myLibraryProject
   myLibraryProject1
   myLibraryProject2
   myLibraryProject3

MyApplicationProject3
   myApplicationProject3
   myLibraryProject
   myLibraryProject1
   myLibraryProject2
   myLibraryProject3

换句话说 - 我的 Eclipse 库项目已为每个应用程序项目重复,这当然是荒谬的。 Android Studio 开发人员怎么会认为我想要维护我所有库项目的 3 个单独副本?

那我该如何解决呢?我搜索并找到了一些主要涉及 Android Studio 导入过程的解决方案,这让我陷入了困境。我想要的只是能够拥有每个库项目的一个副本并将它们导入到我的不同应用程序项目中。

顺便说一句,如果有什么不同的话,我正在使用 Mac OSx。

这是我最后做的事情:

  1. 我在 Android Studio 中创建了一个新的“虚拟”项目。

  2. 在 Eclipse 中,我从 MyLibraryProject 中删除了对库项目的所有引用,因此 Android Studio 不会导入它们。

  3. 在虚拟项目中,我将我的库项目导入为模块(文件->新建->导入模块)

  4. 我将包含我的新模块的文件夹从项目文件夹移动到我的 Android Studio 项目根文件夹。

  5. 在 Eclipse 中,我从我的应用程序项目中删除了对 MyLibraryProject 的所有引用(在项目属性 -> Android 下),因此它不会被 Android Studio 导入.

  6. 我将 Eclipse 应用程序项目导入到 Android Studio(使用文件->新建->导入项目)

    我现在的文件夹结构如下所示:

Android Studio Projects
    MyApplicationProject1
    MyApplicationProject2
    MyApplicationProject3
    MyLibraryProject
    MyLibraryProject1
    MyLibraryProject2
    MyLibraryProject3

  1. 我在我的应用程序项目中编辑了 settings.gradle 文件,如下所示:

include ':MyApplicationProject1'

include ':MyLibraryProject'
project(':MyLibraryProject').projectDir = new File(settingsDir, '../MyLibraryProject')

include ':MyLibraryProject1'
project(':MyLibraryProject1').projectDir = new File(settingsDir, '../MyLibraryProject1')

include ':MyLibraryProject2'
project(':MyLibraryProject2').projectDir = new File(settingsDir, '../MyLibraryProject2')

include ':MyLibraryProject3'
project(':MyLibraryProject3').projectDir = new File(settingsDir, '../MyLibraryProject3')

  1. 我为 MyLibraryProject 编辑了 build.gradle 文件,如下所示:

dependencies {
    compile project(':MyLibraryProject1')
    compile project(':MyLibraryProject2')
    compile project(':MyLibraryProject3')
}

  1. 我为 模块 (不是项目 gradle 文件)MyApplicationProject1 编辑了 build.gradle 文件,如下所示:

dependencies {
    compile project(':MyLibraryProject')
}

如您所见,我必须将所有库添加到项目 settings.gradle 文件中。我尝试为 MyLibraryProject 创建一个新的 settings.gradle 文件并在其中包含其他三个库 projects/modules,但这没有用。不过没什么大不了的。

这个设置看起来很有魅力,希望它能帮助其他遇到这个问题的人。