如何在Android Studio中设置Android库模块并被多个项目引用?

8

我的公司正在使用Android Studio开发几个Android项目,它们都共享一些相似的代码,例如自定义视图、自定义HTTP客户端等等。

我面临的问题是,我对Android Studio还不够熟悉,不知道如何将这些通用代码提取到单个Android库模块中,以供这些项目引用。

在Eclipse中,这非常简单,只需创建一个新的Android Library项目,然后将代码移动到该项目中,并设置Android应用程序项目引用该通用库即可。

在Android Studio中,如何进行这样的重构呢?

1个回答

7

我们公司使用了多个项目共享模块的结构。假设您有两个项目,project1和project2,它们是两个独立的Android Studio项目,并且想要共享一些模块。文件夹结构将如下所示:

source-code-root-folder/
    + android-studio-project1/
         + project1-app-module/
         + project1-internal-module/
    + android-studio-project2/
         + project2-app-module/
         + project2-internal-module/
    + shared-module1/
    + shared-module2/

您可以先在Android Studio中创建项目和模块。然后按照上面的结构重新定位文件夹。接着,在source-code-root-folder/android-studio-project1/settings.gradle中加入以下设置来更新project1的设置:

include ':android-studio-project1'
include ':project1-app-module'
include ':project1-internal-module'
include ':..:shared-module1'
include ':..:shared-module2'

然后打开android-studio-project1/project1-app-module/build.gradle文件并更新依赖项:

...
dependencies {
    ...
    compile project(':project1-internal-module')
    compile project(':..:shared-module1')
    compile project(':..:shared-module2')
}

这样做可以使project1能够加载内部模块和共享模块。尝试在project1中运行build.gradle来同步并构建您的项目,应该可以正常工作。当然,类似的设置也可用于project2。
希望这可以帮到您。

在 SO 上有很多(不幸的是“被接受”的)答案,但这个答案是唯一一个可以在多个项目之间共享自定义库并且只保留源代码的一个副本而不是复制到每个项目中。感谢 Chris。然而,有三个提示:1)在 settings.gradle 中,您可以将所有包含的模块放在单行上,用逗号分隔,如 include ':mod1',':mod2'。2)在 build.gradle 中,将所有 compile 替换为 implementation。3)一个 project 内部的模块可以像这样引用 ':../ProjectX/:moduleX' - Ace
我在使用include ':..:opencv-module'时,遇到了Caused by: org.gradle.api.InvalidUserDataException: The project name '..' must not start or end with a '.'. Set the 'rootProject.name' or adjust the 'include' statement这个错误。 - Venkat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接