Android Studio中的代码共享

时间:2014-12-12 13:52:48

标签: android maven android-studio android-gradle android-library

我已经开始研究一个项目,我需要在一堆应用程序中共享一堆Java个类。在Eclipse中,可以使用所有这些类创建一个项目,并将其用作包含所有依赖项目的工作空间中的库,但在Android Studio中似乎不可能这样做(At最不容易)。

我一直在阅读大量帖子,其中很多都建议设置一个库项目,生成一个aar文件,然后在我的项目中使用它。但是,据我了解,这将使我的图书馆开源(我是对的吗?),我不想要。我正在为客户端做这个,我希望代码库是私有的。

另外,我知道可以将模块导入到新项目中。但这会创建原始模块的COPY。这不是我想要的。我不想保留相同类的多个副本,这完全违背了“代码共享”的目的。

有没有什么好方法可以实现我想要的东西?任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:7)

您有两种不同的选择。

一种选择是将您的库维护为单独的项目,并将它们编译为存档格式,例如JAR或AAR; JAR文件用于纯Java库,AAR用于Android库(包含访问Android API和/或具有Android资源的代码)。正如评论中指出的那样,AAR并没有强迫您将代码发布到世界上,而不仅仅是JAR文件;它只是一种存档文件格式,其文件可以是您的机器或组织的本地文件。

掌握该档案文件后,您可以将其包含在其他项目中。如果您是多开发人员组织的一员,您可能会发现使用存储库管理器在组织中发布和维护这些库很方便,并且您可以使用Maven坐标样式规范在项目中包含库,您不必手动将其复制到开发机器上。

这种方法的缺点是它使得对这些库进行更改变得有点困难:您需要加载项目,进行更改,构建存档以及分发存档。

另一种方法是将库保持为源模块,就像在Eclipse中一样。您发现,如果您通过UI导入该模块,Android Studio将复制该模块,但如果您绕过UI并直接修改构建脚本,您可以执行您想要的操作,即就地使用该模块并共享多个项目中的单个副本。要执行此操作,请使用 settings.gradle 文件并添加以下内容:

include ':module_name'
project(':module_name').projectDir = new File(settingsDir, '../relative/path/to/module')

我强烈建议你不要在这里使用纯粹的相对路径;在此示例中,路径锚定到Gradle提供的settingsDir变量,该变量被定义为找到 settings.gradle 的目录。如果你使用纯粹的相对路径(即没有锚定到任何东西),你依赖于工作目录在运行构建文件的所有环境中是相同的(命令行与Android Studio vs. CI服务器),这不是一件好事。

答案 1 :(得分:2)

您需要在eclipse项目中将其视为Android Studio / IntelliJ Idea模块。然后,您可以生成android(或java)库,然后将它们包含在您的项目中。

要将Android Studio模块标记为库,您可以转到文件 - > 项目结构 - > Facets 然后点击图书馆模块

enter image description here

答案 2 :(得分:0)

您当然可以创建和使用库,而无需使其成为开源或可供其他人使用。

首先,除非它包含资源,否则您不需要将其变为aar。 如果它只是普通的类,你可以把它变成一个.jar文件。

无论哪种方式,共享这些库(aar或jar)的最简单方法是设置自己的存储库。 Nexus和Artifactory是两个最常见的存储库管理器。

您将库保留在自己的项目中,然后将其发布到您自己的内部存储库中。

然后,需要使用库的项目(在gradle中)配置为使用内部存储库,并从中获取库。

答案 3 :(得分:0)

我和你的情况相同,我使用git创建了一种方法。 要做的步骤,有图书馆:

  1. 在Android Studio中创建项目。
  2. 在该项目中创建android库模块。
  3. 在该库模块中创建git存储库。
  4. modulename.iml档案
  5. 中添加.gitignore
  6. 将GitHub或Bitbucket用于私有云存储库。并推动你的图书馆。
  7. 在您想要的任何项目中创建新的Android库模型。
  8. 关闭Android Studio(不确定是强制性的)。
  9. 使用资源管理器转到您创建的模块文件夹。
  10. 删除其中的所有数据,modulename.iml除外。
  11. 将您的图书馆从“GitHub”克隆到其中。
  12. 就是这样。

    现在,无论您是在家还是在工作,您都可以在多个项目中使用库。完成工作后不要忘记推动库更改。打开新的后拉他们。 我想你可以以某种方式自动化这个东西。

    好处是您不需要构建任何jar或aar。