- Android App开发从入门到精通
- 安辉编著
- 1655字
- 2021-03-25 21:15:14
1.6 创建Android库
Android库在结构上与Android应用模块相同。它可以提供构建应用所需的一切内容,包括源代码、资源文件和Android清单。不过,Android库将编译到可以用作Android应用模块依赖项的Android归档(AAR)文件,而不是在设备上运行的APK。与JAR文件不同,AAR文件可以包含Android资源和一个清单文件,这样除了Java类与方法外,还可以捆绑布局和可绘制对象等共享资源。
库模块在以下情况下非常有用:
• 构建使用某些相同组件(例如Activity、服务或UI布局)的多个应用。
• 构建存在多个APK变体(例如免费版本和付费版本)的应用并且需要在两种版本中使用相同的核心组件。
就像公司有10多个App,可以把所有App都需要用的东西封装到库模块中,例如网络请求、在线加载图片等。
这10多个项目都依赖这个库,而不是10多个项目都写一遍网络请求的代码,并且用库的方式方便修改。
当访问网络的代码有bug的时候,只需要修改这个库文件的代码就好了。
1.6.1 创建库模块
要在项目中创建一个新的库模块,需要进行以下操作:
步骤01点击File→New→New Module。
步骤02在出现的Create New Module对话框中,依次点击Android Library和Next。
提 示
还存在一个用于创建Java库的选项,可以构建传统的JAR文件。尽管JAR文件在大多数项目中都非常实用(尤其在希望与其他平台共享代码时),但这种文件不允许包含Android资源或清单文件,而后者对于Android项目中的代码重用非常有用。根据需求决定。
步骤03为你的库命名,并为库中代码选择一个最低的SDK版本,然后点击Finish。在Gradle项目同步完成后,库模块将显示在左侧的Project面板中。
1.6.2 将库模块导入到项目中
有时我们的项目要用别人项目中依赖的库,手动复制过来太麻烦,Android Studio支持导入库文件。
步骤01点击File→New→Import Module。
步骤02选择库模块目录的位置,然后点击Finish。
库模块的代码将会复制到你的项目中,也可以修改库代码。
1.6.3 将应用模块转换为库模块
如果希望把应用模块转换为库模块,可以采用以下步骤:
步骤01打开现有应用模块的build.gradle文件。在顶部看到以下内容:
apply plugin: 'com.android.application'
步骤02修改成下面这行代码:
apply plugin: 'com.android.library'
步骤03点击Sync Project with Gradle Files。
将应用模块转换为库模块就是这么简单,只需要修改一行代码。模块的结构是一样的,改了之后构建的是AAR文件,而不是可以运行在手机上的APK文件。
1.6.4 开发库模块的注意事项
在开发库模块和相关应用时,需要注意以下行为和限制。
将库模块引用添加至你的Android应用模块后,可以设置它们的相对优先级。构建时,库会按照一次一个的方式与应用合并,并按照从低到高的优先级顺序进行。
• 资源合并冲突:构建工具会将库模块中的资源与相关应用模块的资源合并。如果在两个模块中均定义了给定资源ID,将使用应用中的资源。
如果多个AAR库之间发生冲突,将使用依赖项列表首先列出(位于dependencies块顶部)库中的资源。
为了避免常用资源ID的资源冲突,请使用在模块(或在所有项目模块)中具有唯一性的前缀或其他一致的命名方案。
• 库模块可以包含JAR库:可以开发一个自身包含JAR库的库模块。不过,需要手动编辑相关应用模块的构建路径,并添加JAR文件的路径。
• 库模块可以依赖外部JAR库:可以开发一个依赖于外部库(例如Maps外部库)的库模块。在这种情况下,相关应用必须针对包含外部库(例如Google API插件)的目标构建。需要注意的是,库模块和相关应用都必须在其清单文件的元素中声明外部库。
• 库模块不得包含原始资源:工具不支持在库模块中使用原始资源文件(保存在assets/目录中)。应用使用的任何原始资源都必须存储在应用模块自身的assets/目录中。
• 应用模块的minSdkVersion必须大于或等于库定义的版本:库作为相关应用模块的一部分编译,因此,库模块中使用的API必须与应用模块支持的平台版本兼容。
• 每个库模块都会创建自己的R类:在构建相关应用模块时,库模块将先编译到AAR文件中,然后添加到应用模块中。因此,每个库都有其自己的R类,并根据库的软件包名称命名。
• 从主模块和库模块生成的R类会在所需的所有软件包(包括主模块的软件包和库的软件包)中创建。
1.6.5 AAR文件详解
AAR文件的文件扩展名为.aar,Maven工件类型也应当是.aar。文件本身是一个包含以下强制性条目的zip文件:
• /AndroidManifest.xml
• /classes.jar
• /res/
• /R.txt
此外,AAR文件可能包含以下可选条目中的一个或多个:
• /assets/
• /libs/名称.jar
• /jni/abi名称/名称.so(其中abi名称是Android支持的ABI之一)
• /proguard.txt - /lint.jar