文档章节

android模块化开发之aar——本地maven仓库发布和引用

veidy
 veidy
发布于 2017/07/10 14:45
字数 1302
阅读 583
收藏 7
点赞 0
评论 0

在gradle 构建的android项目里面,有了一个爽得飞起的功能就是远程依赖。 如:我想引入okhttp 这个第三方开源网络请求框架,在eclipse开发时代,我们都是在github上要么把打包好的.jar文件下载下来导入,要么就是直接把源文件下载下来导入,一旦okhttp 在github有版本更新,我们又得进行同样的下载、导入工作。烦!在android studio 这么高大上的IDE出现之后,我们就只需一行代码搞定喽! 输入图片说明

如有版本更新,只需要更新版本号然后同步更新即可!简直不能再爽!既然这么好玩,那我们自己动手也玩一玩儿~通过android studio发布本地maven仓库,然后依赖导入项目!

第一步:创建一个moudle "aarlibrary"
第二步:maven发布到本地仓库
第三步:gradle 引入

第一步就不讲了,会开发android的都会 第二、三步是重点,如何在android studio 里面发布本地仓库?gradle 给我们提供了一个插件 “maven”!呵呵~ 好玩的来了,我们打开 aarlibrary 的build.gradle文件开始撸代码

输入图片说明

如上配置之后,我们会发布右侧的gradle 面板有变化:

输入图片说明

多了一个upload-uploadArchives!
离发布就只最后一步了:双击“uploadArchives” 直到稍等片刻就发布好啦~
注释里面已经定义仓库的地址是"file:///Users/veidy/Desktop/aar_/aar"找到本地文件夹发现有货啦!

输入图片说明

开始在app moudle引用:
两步操作:

第一步:在主项目的build.gradle里面引入仓库地址配置:

输入图片说明

第二步: 和其它包一样远程依赖:

输入图片说明

到这整个本地仓库的发布和引用就结束啦!然后就能愉快的引入aarlibrary里面的所有资源了~ 记住是所有资源,真的是所有资源!所有资源!所有资源!就算是aarlibrary 里面有远程依赖其它的aar 一样没问题!
假如在aarlibrary 里面有 远程依赖

compile 'com.squareup.okhttp3:okhttp:3.8.1'

如果像 android 开发之aar——本地文件引用 里面对aarlibrary进行打包然后导入到app moudle是找不到okhttp相关api的!但是如果以上面的形式发布到本地仓库然后依赖是没有问题的!


如果是从上一篇文章最后抛出的问题来看这篇文章的,到这才算"正文"了!

先理一下"aarlibrary里面也有依赖另外一个moudle 如:otherLibrary" 这里有三种情况:

第一种:otherLibrary打包成一个.aar文件然后直接以文件的形式被导入到了aarlibrary moudle的libs 文件夹:

输入图片说明

第二种:otherLibrary以项目moudle的形式被导入到aarlibrary:

输入图片说明

第三种:otherLibrary放在本地仓库或者仓库被导入到aarlibrary:

输入图片说明

对应第一种的解决办法:(又有三种情况)

一、如果你的app moudle的 build.gradle里面是以project的形式引用aarlibrary,可以如下解决: 先在aarlibrary 的build.gradle里面添加

repositories {
    flatDir {
        dirs 'libs' 
    }
}

然后在app moudle 的build.gradle 里面

repositories {
    flatDir {
        dirs 'libs','../aarlibrary/libs' 
    }
}

二、如果你的app moudle的build.gradle里面想以.aar文件形式引用aarlibrary,那不可能!就回到了NO.1这个问题

三、第二种情况不可能,那我们就可以用本文章的核心啊,发布本地仓库再依赖!但是,这里需要注意配置,否则,你会发现在远程依赖时失败~
上篇文章已经讲了怎么引用本地.aar文件:
先把otherlibrary-debug.aar文件放入aarlibrary的libs文件夹,然后在aarlibrary的build.gradle 的dependencies 里面新增下面配置: 输入图片说明

在这,如果我们想把aarlibrary发布到本地仓库,并在app moudle里面远程依赖,需要额外添加两个配置: 输入图片说明 定义group和version!

对应第二种的解决办法:

那就先把otherLibrary打包成.aar然后再引入到aarlibrary里面,再用上面的解决办法搞定~~哈哈哈

对应第三种的解决办法:

那就是本篇文章的核心,直接把aarlibrary整个moudle发布到本地仓库!


源码: https://git.oschina.net/veidy/aar.git

ps:如果照着文章撸的还是要注意一下,如果你的gradle版本太旧可能有些方法找不到,本文是基于gradle3.3版本撸的~


demo始终是demo,真正在项目中使用时会发现更多的问题
NO.2: 如标题“本地仓库引用”毕竟是本地,如果你们项目团队就你一个人那可以本地,反正是你自己一个人玩,但是如果不只一个人怎么办,难倒也要让别人都在本地创建一个仓库吗~~~显然不是! 怎么办?
看完下篇文章《android 开发之aar——远程仓库发布和引用》之后咱们再看这个问题~


最后贴一个二维码!注意不是求打赏的二维码,是本人撸了一个微信公众号!公众号会同步分享在osc上的所有文章!当然应该会有另外有趣的东西,有兴趣的可以扫描关注~

输入图片说明

© 著作权归作者所有

共有 人打赏支持
veidy

veidy

粉丝 130
博文 46
码字总数 18176
作品 0
深圳
程序员
从Android到React Native开发(四、打包流程解析和发布为Maven库)

1、从Android到React Native开发(一、入门) 2、从Android到React Native开发(二、通信与模块实现) 3、从Android到React Native开发(三、自定义原生控件支持)  作为失踪人口,本篇是对...

恋猫月亮
06/13
0
0
这恐怕是史上最简单的上传 AAR 教程

在做项目的时候,抽出来一些工具方法,然后做其他项目的时候需要使用,只是后就有将这些工具方法抽出来单独形成一个库的需求了。在 Android Studio 里就是 AAR。 因为我是个人开发,想到方便...

Jinux111
05/25
0
0
Android Studio创建Android Library发布至本地仓库

本文通过Android Studio创建一个Android Library项目,然后发布到本地的Maven仓库。 1.创建Android Library模块 2.配置build.gradle apply plugin: 'com.android.library'apply plugin: 'ma......

secondriver
2015/11/25
0
0
发布library到Maven仓库

发布library到Maven仓库 参考文章 https://github.com/xiaopansky/android-library-publish-to-jcenter/blob/master/README.md 发布library到Maven仓库----注册帐号等 将自己的开源项目提交到......

addcn
2016/01/22
410
0
如何制作一个android studio的aar依赖包

首先说明我使用的android studio 版本是0.4.因为现在android studio的bug还不较多,所以你的版本能不能正常使用我就不敢说了。 如果你只是单纯的想使用actionbarsherlock的话,引用是十分简单...

手绘灿烂
2014/01/02
0
0
Android studio gradle配置

Gradle 基本概念 首先我们学习几个gradle 的脚本语法,掌握了这几个语法,你就能非常简单的用gradle构建打包android项目了。 首先,我们来看下一个最简单android 。 build.gradle //设置脚本...

习惯_搬砖
2014/11/07
0
1
Android 开发中踩过的坑之九: 发布一个aar的注意事项

现在Android支持aar格式发布一个模块, 提供给其他人使用. aar其实是jar和一些资源文件的zip包. 解决了过去jar包不能分享资源的局限. 1 要尽量避免定义内部接口, 这其实是一个编程习惯, 接口i...

revfycd
2015/08/14
0
0
ADT+Android-m2e环境搭建(Mac OS)

环境要求 JDK1.6+ Maven 3.1.1+ Eclipse Indigo(3.7)、Juno(4.2)以上版本 虽然m2e-android官方推荐Eclipse使用Indigo和Juno以上版本,但本文是基于Kepler(4.3)来分享安装过程的。并整理了Jun...

Madmatrix
2014/07/10
0
0
AS中jar包和aar包区别及导入导出

jar包和aar包区别 *.jar:只包含class文件与清单文件,不包含资源文件,如图片等所有res中的文件。 *.aar:包含所有资源,class以及res资源文件全部包含 如果你只是一个简单的类库那么使用生...

蜗牛崛起
2017/10/26
0
0
Android Studio把library分发到jCenter和Maven Central

如果你想在Android Studio中引入一个library到你的项目,你只需添加如下的一行代码到模块的build.gradle文件中。 1 2 3 dependencies { compile 'com.inthecheesefactory.thecheeselibrary:...

vane_
2015/07/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CoreText进阶(七)-添加自定义View和对其

CoreText进阶(七)-添加自定义View和对其 其它文章: CoreText 入门(一)-文本绘制 CoreText入门(二)-绘制图片 CoreText进阶(三)-事件处理 CoreText进阶(四)-文字行数限制和显示更多...

aron1992
12分钟前
0
0
Python爬虫 爬取百合网的女人们和男人们

学Python也有段时间了,目前学到了Python的类。个人感觉Python的类不应称之为类,而应称之为数据类型,只是数据类型而已!只是数据类型而已!只是数据类型而已!重要的事情说三篇。 据书上说...

p柯西
23分钟前
0
0
在Java中,你真的会日期转换吗

1.什么是SimpleDateFormat 在java doc对SimpleDateFormat的解释如下: SimpleDateFormatis a concrete class for formatting and parsing dates in a locale-sensitive manner. It allows fo......

Java小铺
32分钟前
0
0
Linux系统梳理---系统搭建(二):tomcat的安装和使用

上一章讲到JDK的安装使用,这一章主要记录下服务器tomcat的安装以及部署一个项目. 1.下载tomcat,这里下载的是apache-tomcat-8.5.32.tar.gz 2.创建文件夹,便于管理,和JDK一样,在usr目录下创建t...

勤奋的蚂蚁
42分钟前
0
0
ES15-聚合

1.Terms Aggregation 分组聚合 2.Filter Aggregation 过滤聚合

贾峰uk
43分钟前
0
0
【2018.07.19学习笔记】【linux高级知识 20.27-20.30】

20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行命令 20.30 expect脚本传递参数

lgsxp
46分钟前
0
0
10.32/10.33 rsync通过服务同步~10.35 screen工具

通过服务的方式同步要编辑配置文件:[root@linux-xl ~]# vim /etc/rsyncd.confport=873log file=/var/log/rsync.logpid file=/var/run/rsyncd.pidaddress=192.168.43.21[tes...

洗香香
49分钟前
0
0
与女儿谈商业模式 (3):沃尔玛的成功模式

分类:与女儿谈商业模式 | 标签: 经济学 沃尔玛 陈志武 2007-05-10 09:09阅读(11279)评论(30) 与女儿谈商业模式 (3):沃尔玛的成功模式 陈志武 /文 沃尔玛(Wal-Mart)是另一个有意思的财...

祖冲之
56分钟前
0
0
网页加载速度优化方法总结

1、减少请求 最大的性能漏洞就是一个页面需要发起几十个网络请求来获取诸如样式表、脚本或者图片这样的资源,这个在相对低带宽和高延迟的移动设备连接上来说影响更严重。 2、整合资源 对开发...

Jack088
今天
0
0
dubbo学习

https://blog.csdn.net/houshaolin/article/details/76408399

喵五郎
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部