Android studio Gradle、Android Studio、IDEA和Git的库模块化

Android studio Gradle、Android Studio、IDEA和Git的库模块化,android-studio,intellij-idea,gradle,Android Studio,Intellij Idea,Gradle,我正在开发一个带有Android客户端和Java服务器的应用程序。因为Android Studio客户端和IDEA服务器(以及其他可能的客户端)之间存在共享库,所以它们需要良好的模块化 我在这里看到了关于如何实现Studio和IDEA之间的开发库模块化的几种方法的少量讨论,但从未讨论过机制之间的差异 从长远来看,我应该如何将我的库模块化以实现最简单的管理?我倾向于#3,有什么微妙之处会在以后咬我的屁股吗 模块化机制: 以下是我看到的选择,但如果其他选择更有意义,我很乐意接受 服务器项目中IDEA

我正在开发一个带有Android客户端和Java服务器的应用程序。因为Android Studio客户端和IDEA服务器(以及其他可能的客户端)之间存在共享库,所以它们需要良好的模块化

我在这里看到了关于如何实现Studio和IDEA之间的开发库模块化的几种方法的少量讨论,但从未讨论过机制之间的差异

从长远来看,我应该如何将我的库模块化以实现最简单的管理?我倾向于#3,有什么微妙之处会在以后咬我的屁股吗

模块化机制:

以下是我看到的选择,但如果其他选择更有意义,我很乐意接受

  • 服务器项目中IDEA模块中的库代码。有一个方面为每个模块创建一个jar。让Android客户端依赖于这些JAR

    • 优点:也许简单
    • 缺点:无法调试到Android上的库(???)
  • 为每个库创建一个子模块,并将其包含在两个项目中

    • 赞成:库代码是每个项目的本地代码
    • 反对:图书馆代码的两个实时副本
    • 缺点:Git的复杂性是不变的
  • 服务器是一个IDEA/Gradle项目库是渐变子项目。Android客户端使用外部渐变依赖项创建库

    • Pro:库代码显示为每个项目的本地代码
    • Con:如果没有服务器源代码树,则无法构建客户端(稍后可能会将库提取到子模块中)
    • 缺点:需要直接修改settings.gradle和build.gradle。我是不是在gui之外修改Gradle脚本让自己感到痛苦
    • 缺点:不适合在其他项目中重复使用库
    • 缺点:在使用了几个月后,我只知道足够多的格拉德尔知道它很可怕
  • 对每个库完全单独的项目,作为外部依赖项引用

    • 赞成者:以上都是赞成者
    • 缺点:依赖交互?CommLib取决于模型。服务器依赖于两者。这会让我悲伤吗
    • 缺点:从几个git模块分发源代码会很烦人,尤其是在存在版本依赖的情况下