赞
踩
PS: aar 和 jar 包的区别是,arr支持将layout、照片等资源文件一起打包,而jar不可以。
背景简单介绍:
app依赖lib 1,lib1依赖 lib2,lib1 里面还有第三方的gihub依赖,lib2里面也什么都没有依赖,就是一个单纯的封装的工具module,现在的任务是:
1、lib2做成aar。(配合讲解普通的aar如何打包)
2、lib1做成aar。(配合讲解带第三方依赖的lib怎么打包成aar,带本地lib module的怎么打包成aar)
如果将lib2 打包成aar,那么就属于最基础的打包方式了。
但是这种打包也有好几种:
1、可以用gradlew 命令打包;
2、手动点击gradle task打包;
3、手动点击build 打包。
我这里只演示 3 、手动点击build 打包。
先选中你要打aar的 module,再点击Build,然后点击 Make Module “***”
就会生成一个aar,生成的aar在该module的 build/outputs/aar下
上可能会有人有疑问,为啥是debug.aar,这个是可以改的,如下图:
把这个debug改成release,那么build 出来的aar就是release的了。
你可以将你的aar提供给别人使用。
可能有人觉得这样答出来的aar需要拷贝来拷贝去,不怎么好,那么下面我介绍maven方式的时候刚好也解决了这个问题。
为了跟我最后要讲的第三方依赖和module并存的情况,我这里先暂时将module依赖注释掉。
1、首先声明,这种带依赖的有两种方式打aar:
(1)第一种:跟我上面介绍的一样,你直接打aar即可,但是别人用你的aar的时候,只要访问的类里面包含了第三方依赖的东西,就会提示NoClassFoundException哦,解决办法是你把你依赖的所有第三方依赖拷贝给他,他将这些依赖再在他的项目里面依赖一下就可以正常访问你的aar了。
(2)第二种:使用maven或github形式生成的aar。我这里暂时只介绍提交到maven。
2、分为在线和离线生成两种:
如果你有maven 地址或者是公司的maven地址,你可以直接传上去。当然最好肯定是现在本地测试完上传(上传上去的也可以删除)。
离线测试;
在线测试提交(也会生成本地aar);
离线和在线都会生成aar,并且离线和在线的区别其实就是配置的maven地址不一样。如下图:
上图是应用maven插件。
我红色框出来的上面是在线的地址和账号密码,下面框出来注释的是离线的地址,意思就是生成的aar会提交到本地仓库。
如何生成aar?
找到Gradle 任务里面去找到你刚刚在build.gradle 里面配置的uploadArchvies 任务,双击启动即可。
运行完毕之后,如果你选择的是离线的提交到了本地.m2库,自己可以去翻翻看,如果选择的是直接提交到了maven在线仓库,就需要去访问那个地址去看了。并且别人用的时候需要配置你放的那个maven库的地址、账号、密码,在project的 build.gradle 里面配置一下,配置完的效果如下:
本地仓库地址:我用的是mac,mac的地址一般在.m2目录下,这回目录是隐藏的,你可一直接通过“前往文件夹”或者是解除隐藏既可以看到这个文件夹了。
你一层一层点进去就能找到你提交到本地仓库的aar了。
使用的时候直接在project 的 build.gradle配置一下,新增可以访问本地maven库就可以了:
配置好可以访问本地maven库之外,记得将你的生成的aar依赖地址放到app的module 的build.gradle里面 implemention哦,比如:
这个地址是你在前面配置的groupId那张照片里面配置的提交到maven库的依赖地址。
重点来了,之所以写这篇blog,是为了记录这个。如果要打包的lib里面有本地module依赖,如何打包。
当然您可以直接把您的module给别人,别人添加也行,但是我要介绍的和记录的是提交到maven里面,这样用起来更方便。
如下图:
Lib1 不光有 api 第三方依赖,还有 project 依赖。
我这里采用的是github的一个工具fat-aar工具。首先需要将插件引入,然后应用:
classpath 'com.github.kezong:fat-aar:1.3.5'
apply plugin: 'com.android.library'
apply plugin: 'maven'
apply plugin: 'com.kezong.fat-aar'
在要打包(比如我介绍的lib 1)的 build.gradle 的android 节点里面加上上图的配置。
最后需要对第三方依赖、本地的module依赖进行改造:
这样就改造完了。
然后打包的方式跟我上面介绍的一样,还是去执行uploadArchives task就可以生成了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。