将本地库项目添加为 Android Studio 中多个项目的依赖项

Posted

技术标签:

【中文标题】将本地库项目添加为 Android Studio 中多个项目的依赖项【英文标题】:Add local Library Project as a dependency to multiple Projects in Android Studio 【发布时间】:2014-07-31 17:30:27 【问题描述】:

我通过选择File > New Project... > "Mark this project as a library"android Studio(当前为0.5.2)中创建了一个库项目。

我有另外两个非库项目,我想为这个库项目添加一个依赖项。

-My Library
-Project 1 (depends on My Library)
-Project 2 (depends on My Library)

我的目标是让每个项目保持独立并避免重复模块/代码。如果不将库模块复制到其他项目中,如何做到这一点?

更新: Android Studio 0.6.0 允许您导入模块,但这只是将模块源复制到项目中。

【问题讨论】:

您是否尝试过为这两个项目创建多种风格?有了它,您可以指定特定风格的代码以及它们之间的共享资源 @MrEngineer13 不幸的是,在这种情况下,这两个项目是互斥的,它们唯一的共同点是库项目。 【参考方案1】:

您还可以使用 project().projectDir 属性引用项目文件夹之外的库。如果您的外部库与您的项目相关,那么

- MyLibrary
   - library
- MyProject
    - app

在 MyProject/settings.gradle 中

include ':library'
project(':library').projectDir = new File(settingsDir, '../MyLibrary/library')

在 MyProject/app/build.gradle 中

dependencies 
   compile project(':library')

【讨论】:

您将如何设置“MyLybrary”风格以使用此方法? 这似乎是我所需要的,但它并没有获取library 的传递依赖。有没有办法让它发挥作用? 有没有办法..如果库项目不是相对的 你也可以在文件声明中给出绝对路径。【参考方案2】:

这与这个问题非常相似:

Sharing an Android library between multiple Android apps using Gradle

您可以推送到本地 maven 存储库(build.gradle 中的 mavenLocal()),而不是推送到 maven 中心

【讨论】:

我认为这是处理依赖关系的正确方法。如果该库不是专门为一个项目使用和开发的,您应该制作一个 AAR / JAR 并将其上传到您的开发机器上的 maven / private nexus repo 或 mavenlocal。这样做将允许您始终构建您的应用程序,即使库中的代码更改导致库版本 0.2 而不是您在项目中使用的版本 0.1。这也加快了构建时间,因为在开发期间每次构建应用时都不需要编译库。 我完全同意。我对它库所做的是在我处理新功能时使用我的答案中的相对路径来使用库,但是当库工作完成后切换到引用 maven 存储库中的已发布版本.【参考方案3】:

另一条路线(如果您不想在某处部署该库)是使用您的 VCS 并在您的项目中签出该库。 Git 有这方面的子模块,Mercurial 有 subrepos,SVN 有 external 等等。 然后使用 project 依赖项将其添加到您的 Gradle 构建中。

【讨论】:

以上是关于将本地库项目添加为 Android Studio 中多个项目的依赖项的主要内容,如果未能解决你的问题,请参考以下文章