Android 模块化编程之引用本地的aar
转:
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相关推荐
- 关于Android模块化开发介绍及使用
模块化浅谈: 1.安卓模块化开发介绍: 模块化开发思路就是:单独开发每个模块,用集成的方式把他们组合起来,就能拼出一个app.app可以理解成很多功能模块的组合,而且有些功能模块是通用的,必备的,像自 ...
- Android多模块覆盖率,Android模块化开发中统计aar库的代码覆盖率
现在android 开发都喜欢用模块化的方式,然后以aar文件的方式导入到主项目,但是这对于统计代码覆盖率就有点麻烦了,因为统计时候都忽略这些第三方库,那么我们如何将这些aar文件纳入到代码覆盖率的统 ...
- AS引用本地aar文件
们在使用Android Studio构建项目的时候会使用到aar文件,它和jar文件其实差不多,jar文件是单独只有项目清单,而aar文件是谷歌新弄出来的一种文件,它不仅包括项目清单,还包括资源文件, ...
- android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题
android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题 为什么会用到fat-aar 如何使用 打出来的aarlib中存在多个架构,例如x86\x86_64 我在打包okhttp和 ...
- js模块化编程之彻底弄懂CommonJS和AMD/CMD!
为什么80%的码农都做不了架构师?>>> 先回答我:为什么模块很重要? 答:因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块. 但是,这样做有一个前 ...
- js模块化编程之彻底弄懂CommonJS和AMD/CMD
转载地址:http://www.cnblogs.com/chenguangliang/p/5856701.html 先回答我:为什么模块很重要? 答:因为有了模块,我们就可以更方便地使用别人的代码,想 ...
- c++头文件被c语言调用需要注意什么_嵌入式C语言之模块化编程
C语言中的模块化体现在两个方面: 1 函数. 函数是C语言的最小单位,每个函数均实现一个独立的功能,于是每个函数均可以当做是一个最小的功能模块.这样,C语言就实现了最基本的模块化. 2 文件. 在C语 ...
- C语言探索之旅 | 第二部分第一课:模块化编程
C语言之父 Dennis Ritchie -- 简书作者 谢恩铭 转载请注明出处 第二部分第一课:模块化编程 上一课是C语言探索之旅 | 第一部分第十课:练习题+习作,至此,我们[C语言探索之旅]的第 ...
- Android 网络编程(二) HTTP协议解析
文章目录 引言 HTTP 简介 什么是HTTP,HTTPS 又是什么? HTTP 协议的特点 HTTP URL 格式 HTTP的报文 请求报文 请求行 请求报头 请求数据 响应保文 状态行 响应报头 ...
最新文章
- 网络营销(学习王宜的“赢在网络营销”)重点笔记01
- vue中监听input框获取焦点,失去焦点的问题
- ie下LI的间距问题
- UA PHYS515 电磁理论I 麦克斯韦方程组基础4 介质中的麦克斯韦方程
- 66319d电源使用说明书_海尔洗衣机怎么用 海尔洗衣机使用说明【详细介绍】
- vue/cli 3.0 脚手架【进阶】 使用 amfe-flexible 和 postcss-px2rem进行移动端适
- TortoiseGit 修改密码
- NameError: name 'file' is not defined
- 数据库连接和乱码问题
- J.U.C - 其它组件
- 学计算机的博士男朋友,有个计算机博士男朋友的日常?
- vue3 富文本编辑器
- 手机怎么录游戏视频 手机屏幕录制的方法
- PING命令结果中的TTL是什么?
- 关于Enterprise library logging中一个没搞明白的东西,希望有大大们进来帮忙释疑一下, THKS...
- 原始传奇显示区名的服务器,《原始传奇》新人新区需要了解的一些问题
- VC 6.0 好用的插件推荐
- Flex3与Flash使用总结
- 蝙蝠侠:阿甘起源 for Mac(角色扮演游戏)支持Big Sur
- OpenGL ES 从零开始系列08:交叉存取顶点数据
热门文章
- C++开发工程师可以分为几层?
- 目前人工智能技术趋势如何?
- 线程如何同步?如何使用同步方法?
- 使用Socket类接收和发送数据
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round]
- diff 命令用法--如何打补丁【原创--学习笔记】
- php排序函数实例学习教程
- linux 多窗口查看多命令的操作结果
- 构建“.NET研究” View 时可能用到的代理函数调用顺序
- Leetcode 122.买卖股票的最佳时机II