转:

http://www.stormzhang.com/android/2015/03/01/android-reference-local-aar/

随着项目越来越多,代码的复用就变得异常重要,这时候就要进行模块化编程,就是把一些通用的组件或者类库做成单独的模块,其他项目直接进行引用就好。针对Android开发最常见的就是Android Library,在Gradle出现之前引用Android Library的方式也很繁琐,但是有了Gradle一切变得非常简单方便。

aar

何为aar?大家都知道jar文件把,如果你有一个Android Library项目,可以很容易的导出jar文件,然后在其他项目中很方便的引用,aar和jar类似,区别就是一个Android Library项目导出的jar文件不能包含资源文件,比如一些drawable文件、xml资源文件之类的,所以这就有很大的限制,在gradle之前我们要引用带资源文件的Android Library必须要把整个library导入进来进行引用,但是有了gradle之后,Android Library项目可以直接导出成aar,然后其他项目像引用jar的方式直接方便的引用。

导出aar

首先Android Library项目的gradle脚本只需要在开头声明

apply plugin: 'com.android.library'

之后就和导出apk文件一样的方法,执行 ./gradlew assembleRelease,然后就可以在 build/outputs/aar 文件夹里生成aar文件

引用本地的aar

生成aar之后下一步就是如何引用本地的aar文件?本地的aar文件并没有像引用jar文件这么简单,官方也没有提供解决方案。好在国外的一些前辈总结出了方法,下面就以test.aar文件为例来详述下方法

1、把aar文件放在一个文件目录内,比如就放在libs目录内

2、在app的build.gradle文件添加如下内容

repositories {flatDir {dirs 'libs' //this way we can find the .aar file in libs folder } }

3、之后在其他项目中添加一句gradle依赖便方便的引用了该library

dependencies {compile(name:'test', ext:'aar') }

以上方法亲测有效。

总结

当然通过gradle最普遍的方法是把aar上传到mavenCentral或者jcenter,引用的话更方便,但是对于一些公司内部library不想公开,而传统的引用library方式又太繁琐,引用本地的aar文件这种方式会非常方便合适,之后通用的模块只需要做成library,不管更新还是修改只需要打包成aar,然后供其他项目使用就好了,对Android开发来说这是提升代码复用非常有效的一个手段。

Android 模块化编程之引用本地的aar相关推荐

  1. 关于Android模块化开发介绍及使用

    模块化浅谈: 1.安卓模块化开发介绍: 模块化开发思路就是:单独开发每个模块,用集成的方式把他们组合起来,就能拼出一个app.app可以理解成很多功能模块的组合,而且有些功能模块是通用的,必备的,像自 ...

  2. Android多模块覆盖率,Android模块化开发中统计aar库的代码覆盖率

    现在android 开发都喜欢用模块化的方式,然后以aar文件的方式导入到主项目,但是这对于统计代码覆盖率就有点麻烦了,因为统计时候都忽略这些第三方库,那么我们如何将这些aar文件纳入到代码覆盖率的统 ...

  3. AS引用本地aar文件

    们在使用Android Studio构建项目的时候会使用到aar文件,它和jar文件其实差不多,jar文件是单独只有项目清单,而aar文件是谷歌新弄出来的一种文件,它不仅包括项目清单,还包括资源文件, ...

  4. android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题

    android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题 为什么会用到fat-aar 如何使用 打出来的aarlib中存在多个架构,例如x86\x86_64 我在打包okhttp和 ...

  5. js模块化编程之彻底弄懂CommonJS和AMD/CMD!

    为什么80%的码农都做不了架构师?>>>    先回答我:为什么模块很重要? 答:因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块. 但是,这样做有一个前 ...

  6. js模块化编程之彻底弄懂CommonJS和AMD/CMD

    转载地址:http://www.cnblogs.com/chenguangliang/p/5856701.html 先回答我:为什么模块很重要? 答:因为有了模块,我们就可以更方便地使用别人的代码,想 ...

  7. c++头文件被c语言调用需要注意什么_嵌入式C语言之模块化编程

    C语言中的模块化体现在两个方面: 1 函数. 函数是C语言的最小单位,每个函数均实现一个独立的功能,于是每个函数均可以当做是一个最小的功能模块.这样,C语言就实现了最基本的模块化. 2 文件. 在C语 ...

  8. C语言探索之旅 | 第二部分第一课:模块化编程

    C语言之父 Dennis Ritchie -- 简书作者 谢恩铭 转载请注明出处 第二部分第一课:模块化编程 上一课是C语言探索之旅 | 第一部分第十课:练习题+习作,至此,我们[C语言探索之旅]的第 ...

  9. Android 网络编程(二) HTTP协议解析

    文章目录 引言 HTTP 简介 什么是HTTP,HTTPS 又是什么? HTTP 协议的特点 HTTP URL 格式 HTTP的报文 请求报文 请求行 请求报头 请求数据 响应保文 状态行 响应报头 ...

最新文章

  1. 网络营销(学习王宜的“赢在网络营销”)重点笔记01
  2. vue中监听input框获取焦点,失去焦点的问题
  3. ie下LI的间距问题
  4. UA PHYS515 电磁理论I 麦克斯韦方程组基础4 介质中的麦克斯韦方程
  5. 66319d电源使用说明书_海尔洗衣机怎么用 海尔洗衣机使用说明【详细介绍】
  6. vue/cli 3.0 脚手架【进阶】 使用 amfe-flexible 和 postcss-px2rem进行移动端适
  7. TortoiseGit 修改密码
  8. NameError: name 'file' is not defined
  9. 数据库连接和乱码问题
  10. J.U.C - 其它组件
  11. 学计算机的博士男朋友,有个计算机博士男朋友的日常?
  12. vue3 富文本编辑器
  13. 手机怎么录游戏视频 手机屏幕录制的方法
  14. PING命令结果中的TTL是什么?
  15. 关于Enterprise library logging中一个没搞明白的东西,希望有大大们进来帮忙释疑一下, THKS...
  16. 原始传奇显示区名的服务器,《原始传奇》新人新区需要了解的一些问题
  17. VC 6.0 好用的插件推荐
  18. Flex3与Flash使用总结
  19. 蝙蝠侠:阿甘起源 for Mac(角色扮演游戏)支持Big Sur
  20. OpenGL ES 从零开始系列08:交叉存取顶点数据

热门文章

  1. C++开发工程师可以分为几层?
  2. 目前人工智能技术趋势如何?
  3. 线程如何同步?如何使用同步方法?
  4. 使用Socket类接收和发送数据
  5. Codeforces Round #320 (Div. 2) [Bayan Thanks-Round]
  6. diff 命令用法--如何打补丁【原创--学习笔记】
  7. php排序函数实例学习教程
  8. linux 多窗口查看多命令的操作结果
  9. 构建“.NET研究” View 时可能用到的代理函数调用顺序
  10. Leetcode 122.买卖股票的最佳时机II