创建 Android 库

Android 库在结构上与 Android 应用模块相同。它可以提供构建应用所需的一切内容,包括源代码、资源文件和 Android 清单。不过,Android 库将编译到您可以用作 Android 应用模块依赖项的 Android 归档 (AAR) 文件,而不是在设备上运行的 APK。与 JAR 文件不同,AAR 文件可以包含 Android 资源和一个清单文件,这样,除了 Java 类与方法外,您还可以捆绑布局和可绘制对象等共享资源。 库模块在以下情况下非常有用:

 •构建使用某些相同组件(例如 Activity、服务或 UI 布局)的多个应用。

 •构建存在多个 APK 变体(例如免费版本和付费版本)的应用并且需要在两种版本中使用相同的核心组件。 在任何一种情况下,只需要将您希望重用的文件移动到库模块中,然后以依赖项的形式为每个应用模块添加库。

本页面将说明如何执行这两个操作。


创建库模块

要在您的项目中创建一个新的库模块,请按以下步骤操作:

1.点击 File > New > New Module。

 2.在出现的 Create New Module 窗口中,依次点击 Android Library 和 Next。 还存在一个用于创建 Java 库的选项,可以构建传统的 JAR 文件。尽管 JAR 文件在大多数项目中都非常实用(尤其在您希望与其他平台共享代码时),但这种文件不允许您包含 Android 资源或清单文件,而后者对于 Android 项目中的代码重用非常有用。因此,本指南将侧重论述创建 Android 库。

3.为您的库命名,并为库中代码选择一个最低的 SDK 版本,然后点击 Finish。 在 Gradle 项目同步完成后,库模块将显示左侧的 Project 面板中。如果您未看到新模块文件夹,请确保将视图切换为 Android 视图。

将应用模块转换为库模块

如果您现有的应用模块包含您希望重用的所有代码,则可以按照以下步骤将其转换为库模块:

1.打开现有应用模块的 build.gradle 文件。您应在顶部看到以下内容:

apply plugin: 'com.android.application'

2.按照下面所示更改插件分配:

apply plugin: 'com.android.library'

3.点击 Sync Project with Gradle Files。 就这么简单。模块的整个结构仍然相同,但是现在它将作为 Android 库运行,构建也将创建一个 AAR 文件,而不是 APK。

以依赖项形式添加您的库

要在另一个应用模块中使用您的 Android 库的代码,请按以下步骤操作:

 1.通过两种方式之一将库添加到您的项目(如果您是在相同项目中创建的库模块,则该模块已经存在,您可以跳过此步骤):

•添加已编译的 AAR(或 JAR)文件:

   a.点击 File > New Module。

b.依次点击 Import .JAR/.AAR Package 和 Next。

c.输入 AAR 或 JAR 文件的位置,然后点击 Finish。

 •将库模块导入到您的项目中:

a.点击 File > New > Import Module。

b.输入库模块目录的位置,然后点击 Finish。

 库模块将复制到您的项目中,因此您可以尽管编辑库代码。如果您希望维护一个版本的库代码,则此方法可能不是您想要的,您应按照上文所述导入编译的 AAR 文件。

2.确保库列在您 settings.gradle 文件的顶部,如下面名为“my-library-module”的库所示:

  include ':app', ':my-library-module'

3.打开应用模块的 build.gradle 文件,并向 dependencies 块中添加一行新代码,如下面的片段所示:

dependencies { compile project(":my-library-module") }

4.点击 Sync Project with Gradle Files。

在上面的示例中,名为 my-library- module 的 Android 库模块成为 build.gradle 文件所在模块的构建依赖项。 您的应用模块现在可以访问 Android 库中的任何代码和资源,库 AAR 文件在构建时已捆绑到您的 APK 中。 不过,如果希望单独共享 AAR 文件,则可以在 项目名称/模块名称/build/outputs/aar/ 中找到它,也可以通过点击 Build > Make Project 的方式重新生成此文件。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,876评论 25 709
  • 此文章复制于:https://developer.android.com/studio/projects/andr...
    梦雨潇湘_e262阅读 332评论 0 0
  • 云雾迷胧寻舟渡,远岸风云不知归。 江畔守得渔樵散,落花无意水东流。
    云中漫步游阅读 213评论 0 3
  • 血色残阳 白色沙滩 英雄从赤水中走来 丢掉了手中的剑 无人拾起 剑留给了昔日的英雄 今人拿起了石斧 茫然不知所措 ...
    四十二客星阅读 292评论 5 3
  • 2017年6月27日 星期一 收获 今天学习是人际交往,人际交往是我的弱项,特别是和陌生人打交道,更是内心充满...
    艾你没商量阅读 193评论 0 0