android模块化开发之aar——本地maven仓库发布和引用
博客专区 > veidy 的博客 > 博客详情
android模块化开发之aar——本地maven仓库发布和引用
veidy 发表于5个月前
android模块化开发之aar——本地maven仓库发布和引用
  • 发表于 5个月前
  • 阅读 263
  • 收藏 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
粉丝 132
博文 44
码字总数 18176
×
veidy
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: