Android Studio:开发在应用程序之间共享的通用Java库

时间:2016-03-24 07:45:34

标签: java android libraries

我一直在研究SO并看到很多关于将应用程序链接到库的讨论,但在所有情况下(我发现)都将库导入到应用程序中。

据我了解,导入将库复制到App中。在我们的例子中,我们有几个常见的Java源库(L1,L2等)正在积极开发中,我们需要几个应用程序(A1,A2等)来引用这些库。这意味着无法将库导入/复制到应用程序,因为库经常更改。

这些库已经被创建为单独的Android项目(我们尝试创建模块/ Android库,但这并不是更好)。我们在IDE中使用Android Studio。

如何在不将库复制到项目中的情况下进行链接? 感谢。

3 个答案:

答案 0 :(得分:2)

注意:我现在有了更好的answer。我为它创建了一个新的问题(澄清实际问题),因为这个问题被标记为重复。

  1. 将所有库放在一个公共文件夹中(例如~/AppProjects/lib/)。
  2. 将lib文件夹的软链接放入app文件夹(ln -s ~/AppProjects/lib/ ~/AppProjects/<app>/)。
  3. 当您致电File > New > New Module > Import Gradle Project时,您可以浏览lib文件夹中的<app>文件夹。
  4. 库模块将以标准方式导入。但是不会有任何副本,因为它已经&#34;是&#34;在app文件夹中;并且更改将直接保存在库文件夹中。

    警告:更改库文件后,必须完成完整版本(Build > Rebuild Project),因为Make Project会产生compileDebugJavaWithJavac - Unable to find source java class错误。

答案 1 :(得分:2)

您可以使用jitpack.io发布库,然后以与在graddle上使用任何其他库相同的方式使用它们,包括通过git标记进行版本控制。

基本上,你需要的只是一个git驱动的存储库,比如Github,Bitbucket,GitLab等。

答案 2 :(得分:0)

我会使用git submodulemercurial suberporitory来实现这一目标。 所有模块(应用程序和库)都有自己的存储库。
从您的应用程序项目中,您有一个专用文件夹,其中包含来自其他存储库的外部依赖项。然后将java库添加为应用程序的子存储库。 项目布局看起来像这样。

enter image description here

settings.gradle项目MyApplication中,您必须包含java-library

include  ':java-library'
project(':java-library').projectDir = new File("external/java-library/")
include ':app'

和app的依赖关系build.gradle

dependencies {
    implementation project(":java-library")
}