【问题标题】:Using open source libraries in Android projects在 Android 项目中使用开源库
【发布时间】:2015-03-29 16:24:37
【问题描述】:

我是 Android 编程的初学者,我正在使用 android studio...现在我想知道从 gitHub 安装开源库的最佳方法是什么。 我的问题是从组织原则的角度来看- 我应该为每个库创建一个新包并将所有库源代码按原样放在该包中吗?包应该在 source.main.java 文件夹中吗? (android studio 自动创建的那个)。 抱歉这个愚蠢的问题......只是我在一个大型项目中迈出了第一步,我不想因为糟糕的组织实践而在未来失去理智。

【问题讨论】:

    标签: android github libraries code-organization


    【解决方案1】:

    这个问题没有正确答案。一些错误的做法,但常识会指导你。

    我的建议:

    首先将这个开源代码的源代码签入贵公司的源代码控制系统中的某个位置,并且能够根据需要进行构建或重新构建。不一定在您的项目中,但只是将代码签入,这样就不会丢失或与原作者在 GitHub 上不断变化的更改混淆。

    至于你如何消费它,你有几个选择。

    1. 在它自己的项目中构建开放源代码(签入源代码控制,但与您的主项目分开)。然后只需删除已编译的文件(.class、.jar、.lib 等...)并将其签入您的主项目。如果您认为不需要经常更改开源代码,这是最灵活的选择。具有管理多个项目的附带好处。

    2. 将源代码按原样直接放到您的项目中。这意味着您将始终重建代码。这为开发和更改特定于您项目需求的代码提供了最大的灵活性。

    可能还有这些选项的混合解决方案。

    最重要的是,无论您使用什么,都需要复制并在您自己的系统中构建。因为您从 GitHub 下载的代码随时可能消失或发生重大变化。

    【讨论】:

      【解决方案2】:

      一个简单的解决方案是使用JitPack 将这些 GitHub 项目导入到您的 gradle 构建中。

      首先您需要添加存储库:

      repositories {
          maven { url "https://jitpack.io" }
      }
      

      然后将所有 GitHub 存储库作为依赖项:

      dependencies {
          compile 'com.github.RepoOwner:Repo:Version'
          // more dependencies...
      }
      

      JitPack 在幕后检查代码并编译它。

      【讨论】:

        【解决方案3】:

        我认为您正在寻找this。如果你使用的是eclipse,你应该检查this

        如果您正在寻找将 jar 文件添加到您的 lib,您可以简单地在您的项目中创建一个 lib 文件夹并将 jar 文件添加到库中,您必须在构建文件中添加行 compile files('jarfile.jar')(gradle build)。如果您使用的是 eclipse,您可以关注 this

        顺便说一句,为每个库创建一个包并放置所有库源代码在我看来并不明智。这几乎相当于重新创建项目。我确定这不是正确的方法。

        【讨论】:

          【解决方案4】:

          如果第三方代码打包为 .jar 或 .aar 并在面向公众的 maven 存储库(例如 maven Central)中可用,那么您应该将该库作为依赖项添加到您的 build.gradle 文件中。

          如果它不能作为 maven/gradle 依赖项使用,您可以按照此处其他答案中的建议将库的代码添加到您的项目中。我从来都不喜欢那种解决方案。

          您还可以构建 .jar 或 .aar 并将其添加到项目的 lib 目录中,正如此处其他答案所建议的那样。对于依赖项很少的小型简单项目,这可能是有意义的。

          对于更大、寿命更长的项目,我喜欢做的是设置我自己的 Nexus 服务器(一个 Maven 存储库服务器),并将第三方依赖项放在那里。

          【讨论】:

          • 谢谢!我没有 Nexus 服务器的东西,但我还没有瞄准那种规模的项目......
          猜你喜欢
          • 2011-07-02
          • 2014-02-19
          • 2013-03-04
          • 2010-11-24
          • 1970-01-01
          • 2015-04-28
          • 2011-10-30
          • 2011-12-15
          • 1970-01-01
          相关资源
          最近更新 更多