【问题标题】:How to SHARE Java sources between Eclipse and Android Studio?如何在 Eclipse 和 Android Studio 之间共享 Java 源代码?
【发布时间】:2017-03-28 07:55:08
【问题描述】:

我有一个 Eclipse 代码项目(纯 Java 和库),我想继续在 Eclipse 下添加维护。
同时,我想将此项目用作 Android Studio 项目的一部分。


我不喜欢将 Eclipse 项目“一次性导入”到 Android Studio 中(如 here 和我看到的许多其他 SO 答案中所述),而是将 Eclipse 项目添加到 AS 项目中,所以当我更改Eclipse项目时,它会反映在AS项目中。 (如果有任何帮助,我可以将 Eclipse 项目迁移到 Gradle)。


如果这不切实际,我会选择下一个选项:让 AS 项目使用 Eclipse 项目的源文件夹。

可行吗?


编辑: 在 cmets 和 amswers 之后添加清晰度: 我所指的 Java 代码是 Eclipse 项目的一部分。出于讨论的目的,可以假设它是一个常见的“逻辑部分”,为此我将有一个桌面 GUI 和图形,我将在 Eclipse 上执行,以及移动 GUI 和图形,我将在 AS 上执行。 java 逻辑部分是一个共同的核心,我围绕它构建。

【问题讨论】:

  • 附带说明,现在继续使用 Eclipse ADT 进行 Android 开发可能不是一个好主意 Google has officially ended its support
  • 选项 #1:让 Eclipse 项目发布一个 JAR,AS 项目将其用作依赖项。例如,您可以使用本地 Maven 存储库。选项 #2:将 Eclipse 项目作为模块移动到您的 Android Studio 项目中。将build.gradle 添加到此模块,配置源集并教Gradle(和Android 插件)如何在Eclipse 项目结构中查找文件。将模块添加到项目根目录中的settings.gradle。然后,让项目中的其他模块通过compile project()引用该模块。
  • @sschuberth 感谢旁注。我将 Eclipse 用于 Java(仅限)项目,将 AS 用于 Android。这就是我需要共享选项的原因。
  • @CommonsWare 感谢您的建议。你会发布一个答案吗?选项 #1:对 Eclipse 项目中的每一个小改动都做这件事不是很麻烦吗?关于选项 #2:我将不得不尝试并学习如何去做。
  • FWIW,Android Studio(作为 IntelliJ IDEA fork)也可以处理纯 Java 项目。因此,如果您不想继续使用 Eclipse,另一种选择是将纯 Java 项目移至 Gradle(也是纯 Java 项目,不应用 android-gradle-plugin)并将其用作 Android 和纯 Java 项目中的模块。

标签: java android eclipse android-studio


【解决方案1】:

同时,我想将此项目用作 Android Studio 项目的一部分。

我假设这个项目产生了一个库;否则,我不确定您将在 Android 项目中使用它做什么。那么问题就变成了:这个库是否被其他项目使用,与您计划的 Android Studio 项目分开?

如果答案是“是的,这个库有很多客户”,那么您真的应该考虑将该库作为工件发布到存储库。这可能是您自己的开发机器上的一个存储库,或者是您团队的本地服务器上的一个存储库,或者是一个公共存储库(例如,如果这是一个开源项目)。您的每个客户可能需要此库的不同版本,因此将库的不同版本发布为版本化工件似乎很有用。

如果答案是“嗯,真的,这个 Java 代码的 JAR 可能会单独使用,例如从命令行使用,但作为一个库,唯一的客户端是 Android Studio 项目”,那么您可以设置一个混合Android Studio/Eclipse项目,将Eclipse项目移到Android Studio项目中,可以作为库模块使用。

接下来的关键是将build.gradle 文件添加到 Eclipse 项目/AS 模块,该模块将教 Gradle/AS 如何构建您的 Eclipse 项目。例如,如果你有 pre-AS Android 项目使用的那种文件结构,你可能有一个像这样的android 闭包:

android {
    compileSdkVersion 19
    buildToolsVersion "21.1.2"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

您还需要将此模块添加到项目根目录中的settings.gradle 文件中。此时,其他模块可以使用dependencies 中的compile project(':whatever-you-call-it') 来拉入您的库。

话虽如此,正如 sschuberth 所说,Android Studio 支持纯 Java 模块,至少从 Android Studio 2.2 开始。我会走这条路,因为两个 IDE 将是系统密集型的,因为 Eclipse 和 Android Studio 都不完全符合“苗条”的条件。

【讨论】:

    猜你喜欢
    • 2012-12-26
    • 2014-07-07
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 2014-10-27
    • 1970-01-01
    • 2017-10-19
    相关资源
    最近更新 更多