创建 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 的方式重新生成此文件。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

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