在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上的所有文章!当然应该会有另外有趣的东西,有兴趣的可以扫描关注~