• Android Studio 打包及引用 aar


    Android Studio 打包及引用 aar


    1、 简述

            在比较大的 Android 项目的开发中,我们经常会遇到工程、jar 包等等之间相互引用的方式。一般我们通过在 gradle 文件中配置依赖来解决,比如:

            通用配置

    Gradle 的一些基本依赖配置方式如下

    • compile fileTree(dir: 'xxx', include: ['*.jar', "*.xxx"]):将某个目录下所有符合扩展名的文件作为依赖;
    • compile 'com.xx.xx:ProjectName:Version':配置Maven` 库作为依赖;在 Maven 库中心 可以搜索自己想用的库进行依赖;
    • compile project(':AnotherModule'):配置另一个 Module 作为本 Module 的依赖,被依赖的 Module 必须被导入到当前工程中;
    • compile files('xxx.jar'):配置某个 jar 包作为依赖。

            看起来不错,基本通用的配置都已经存在了。一般对于中等小型的工程,这种开发方式完全没有问题。但是有时候 A 和 B 两个工程,想同时引用另一个公共的 Module C,而这个 Module 可能是一个比较复杂的 Android Module,可能包含了一些主题、UI 、资源文件等等,这时候,如果用 Module 依赖的方式来配置,不免有些困难,因为 A 和 B 都要导入 C,而且要随时关注 C 的更改。

            好在 Android Studio 提供了 aar 库的打包方式,我们可以把 C 作为 library 进行打包,输出 aar 文件,然后在 A 和 B 中,配置 aar 库依赖,就可以解决。

    2、aar 文件简介

            要输出 aar 文件,必须将 Module 配置为 library,在 gradle 文件中如下:

    • 输出 aar : apply plugin: 'com.android.library'
    • 输出 apk :apply plugin: 'com.android.application'

            将 Module 配置为 library 后,构建输出一个 aar 文件,根据渠道和 BuildType 的不同,在相应的目录下可以找到。比如对 BuildType 为 debug 的配置,输出为:[ModuleName]/build/outputs/aar/[ModuleName]-debug.aar。一份 aar 文件其实就是一份 zip 包,和 jar 不同的是,它将一些资源文件、第三方库文件、so 文件等等都打包在内,而代码文件编译后压缩在在 classes.jar 中。比如:

            aar 文件目录结构

    3、导入 aar 的方式引用

            这种方式比较简单,打开 Project Structure,添加一个新 Module,然后选择 Import *.JAR or *.AAR Package 的方式导入:

            导入方式

            导入后,在你的工程下面,会生成一个文件夹,里面是 aar 文件以及 Android Studio 的配置文件。

            导入的 aar 工程目录

            接着可以在 gradle 中配置依赖了,其他 Module 可以引用这个 Module 了,依赖方式使用 compile project 的方式即可。

    缺点:被依赖的 aar 无法 F3 跟进去,无法看到资源文件内容以及目录层级等等缺陷。

    4、使用配置依赖的方式引用

            gradle 其实还有另一种依赖可以引用 aar:

    • compile(name: 'xxx', ext: 'aar')

            首先需要将 aar 文件放入引用 Module 的 libs 目录下,和一般的 jar 文件类似。然后在 gradle 配置文件中把 libs 目录加入依赖:

    repositories {
        flatDir {
            dirs 'libs'
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5

            接着在 gradle 的依赖配置中加入 compile(name: 'xxx', ext: 'aar') 这一句,依赖即可关联完毕。构建一下工程,在 Module 的 build/intermediates/exploded-aar 目录下,可以看到有一些临时文件生成:

            被导入 aar 生成的临时文件

            看起来完全是引用 aar 的解压版本。Android Studio 安装反编译插件后,可以通过 F3 跟进到 class 文件里面,如果你有被依赖 Module 的源代码的话,还可以 Attach Source 关联源代码查看。另外,可以很方便的查看 aar 中的资源文件。

            另外,这种依赖方式更新 aar 后,生成的临时文件也会随之变动,不用担心改动不同步的问题。

    5、总结

            综上,介绍了 aar 文件的生成方式,以及两种 aar 依赖的方式,经过实战检验,第二种通过配置 gradle 依赖的方式简单易用,只需一行代码即可搞定。

  • 相关阅读:
    佛學概要十四講表
    冰川时代4中英台词全集
    Linux Mysql 每天定时备份
    zabbix拓扑图
    搭建zabbix 3.4
    ★日常工作保养电脑及设备★
    宽带突然断网了,需要做如下应急措施
    预防这几点,可以让你的电脑长久耐用!!!!
    搭建简易的 DISCUZ论坛
    format 的常见用法
  • 原文地址:https://www.cnblogs.com/krislight1105/p/5071376.html
Copyright © 2020-2023  润新知