【问题标题】:How can I use an application from another project as a library?如何将另一个项目中的应用程序用作库?
【发布时间】:2015-11-12 03:54:54
【问题描述】:

当另一个项目中的应用程序依赖于我已经在使用的库时,如何将其用作库?

这是我所拥有的:

MyProject
  app
  libraries
    ExoPlayer
      demo
      library

这是与此相关的我当前的配置。

demo/build.gradle:

apply plugin: 'com.android.application'
...
dependencies {
    compile project(':library')
}

库/build.gradle:

apply plugin: 'com.android.library'

MyProject/settings.gradle:

include ':libraries:ExoPlayer:library'

MyProject/app/build.gradle:

dependencies {
    compile project(':libraries:ExoPlayer:library')
}

如您所见,我将 ExoPlayer 库用作库(如图),但我也想将演示应用程序用作库(特别是对于 DemoPlayer,我不想要活动)。但是 demo 也依赖于库。我必须在我的 gradle 文件中添加什么来实现这一点?

我尝试按照库设置并将其应用于演示,但它破坏了演示构建:

Project with path ':library' could not be found in project ':libraries:ExoPlayer:demo'

我曾尝试关注其他类似的帖子,例如this one,但没有成功。

感谢您的帮助。

【问题讨论】:

  • 不说明原因就对问题投反对票是没有建设性的。这个问题有什么问题?

标签: java android gradle hierarchy exoplayer


【解决方案1】:

很久以前,我使用 Exoplayer 作为库项目,但不再需要它:您可以使用 gradle 依赖项:

compile 'com.google.android.exoplayer:exoplayer:r1.4.2'

如果您想保留库项目,则必须检查您的settings.gradle,其中所有 Android Studio 引用的模块都在其中。此文件包含模块的名称,因为您将在之后使用它。

示例:(基于AndroidVuMeter)

settings.gradle

include ':app', ':vumeterlibrary'

项目结构

Project/
   app/
   vumeterlibrary/

要使用vumeterlibrary,您必须在您的应用程序中使用compile project(':vumeterlibrary') build.gradle

【讨论】:

  • 这看起来和我上面尝试的完全一样,但是项目结构不同。 compile project 的参数可以是子项目的路径还是必须在根项目文件夹中?
  • 您不需要使用子项目通行证,而是在您的根settings.gradle 中定义的yourlibrary 之类的项目名称。不要犹豫,查看我的答案中链接的 AndroidVuMeter 库
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 2022-01-16
  • 1970-01-01
  • 2023-03-10
  • 2011-11-23
  • 2016-03-17
相关资源
最近更新 更多