【问题标题】:How to setup Android Library module and be referenced by multiple projects in Android Studio?如何在 Android Studio 中设置 Android Library 模块并被多个项目引用?
【发布时间】:2015-12-07 03:24:38
【问题描述】:

我的公司正在 Android Studio 上制作几个 Android 项目,它们都共享一些相似的代码,例如自定义视图、自定义 HTTP 客户端和许多其他东西。

我面临的问题是,我是 Android Studio 新手,我不确定如何将多个项目中的这些通用代码提取到将被这些项目引用的单个 Android 库模块中。

在 Eclipse 中非常简单,只需新建一个 Android Library 项目,然后将代码移到那里,并将 Android Application 项目设置为引用公共库。

Android Studio 是如何进行这样的重构的?

【问题讨论】:

    标签: java android android-studio gradle android-library


    【解决方案1】:

    我们公司使用了一个包含多个共享模块的项目的结构。假设您有 2 个项目,project1 和 project2,它们是 2 个独立的 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 尝试同步并构建您的 project1,它应该可以工作。当然project2也可以使用类似的设置。

    希望对您有所帮助。

    【讨论】:

    • 在这么多(不幸的是“接受”)关于 SO 的答案中,这个是唯一一个同时在多个项目之间共享自定义库保持只复制一份源代码,而不是将其复制到每个项目中。谢谢克里斯。三个提示,1) 在settings.gradle 中,您可以将所有包含的模块放在用逗号分隔的一行中,例如include ':mod1', ':mod2'。 2) 在build.gradle 中,将所有compiles 替换为implementation。 3) 可以像这样引用另一个 project 中的模块':../ProjectX/:moduleX'
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多