Android打包AAR发布到本地Maven仓库

Android打包AAR发布到本地Maven仓库

前情提要

  在Android开发中,有时候我们仅仅需要把库打包给自己用,也不想上传到Maven,那这个时候,把库打包到本地Maven库是一个明智的选择,一来这个库可以被多个项目同时使用,二来也很容易集成第三方依赖,不会出现普通打包AAR的情况——第三方依赖找不到了。接下来我们就来看看,怎么样打包AAR发布到本地Maven仓库。

打包发布步骤

一、新建项目

  新建一个Android项目,这我就不一一解释了,我这里以一个新的安卓项目来举个例子。

二、新建一个Module

在我们刚才新建的Android项目上新建一个Module:
file -> New -> New Module...
在弹出来的Select a Module Type选项框中选择Android Library,然后确定。

截屏2020-09-27 上午11.02.10

点击确定后,接下来的对话框里输入Module库的名字或者可以选择性的修改module库的包名:

截屏2020-09-27 上午11.09.53

仅仅是演示,我这里就不做修改了,直接点击Finish,然后等待构建完成即可完成一个Module库的创建。
截屏2020-09-27 上午11.17.34

三、发布到本地Maven仓库

Android下都是使用Gradle构建项目到,我们可以在Gradle构建文件里引入Maven插件,然后就可以各种使用Maven的功能了。

编辑我们刚才新建的库的gradle构建文件:

  • 我们编辑mylibrarybulid.gradle构建文件,在这个文件的头部加入Maven插件apply plugin: 'maven',如图:
    截屏2020-09-27 下午4.18.08

  • dependencies这个节点的上面新增如下代码:

     //填写你想把仓库放在哪个位置,我这里选择放在SDK下面
    ext {
        ANDROID_SDK_PATH = "/Users/huan/workspace/android/sdk/extras/android/m2repository"
    }
    

    可以看到注释中说明,这里是填写你想把仓库建立的位置即可,我选择的是在SDK里面。

  • dependencies这个节点最底下新增如下代码:

    //配置本地maven仓库
    uploadArchives {
        repositories {
            mavenDeployer {
                //本地Maven库的路径,这个路径可以随意安排放在哪里
                repository(url: "file://" + project.ANDROID_SDK_PATH)
                //包名
                pom.groupId = 'mylibrary'
                //项目名
                pom.artifactId = 'lib'
                //版本号
                pom.version = '0.0.1'
                //使用的时候就可以:implementation '包名:项目名:版本号'
            }
        }
    }
    

可以看到,我们在mylibrarybulid.gradle构建文件中做了三处修改,一是添加Maven插件,二是配置本地maven仓库的位置,三是配置Maven的参数。
截屏2020-09-27 下午3.57.17

做好修改后,我们同步一下项目(右上角有只小象,Sync Project with Gradle Files),同步好了之后,很简单的三部曲:
截屏2020-09-27 下午2.33.17

然后等待打包完成即可:
截屏20200927 下午2.36.40.png

到此,本地Maven仓库的 打包 -> 发布 都完成了。

使用本地Maven仓库的软件包

上面是我们打包到发布的步骤,当成功发布一个Module库到本地Maven仓库后,我们可以在当前项目就使用,也可以在别的项目中使用,使用之前有两个步骤:

  • 在项目的最外层bulid.gradle中引入仓库地址
  • 在需要使用的模块的bulid.gradle中引入这个软件包
    使用的格式是:
    implementation '包名:项目名:版本号'
    

现在我们又来新建一个项目(UseMavenDemo),这个项目就专门演示如何引入我们上面所发布的Module库。

在项目的最外层bulid.gradle中引入仓库地址

看图:
截屏2020-09-27 下午4.06.45

在图中 2 的位置添加仓库的位置即可。

在需要使用的模块的bulid.gradle中引入这个软件包

比如当前我需要在app模块中使用这个库,那就按这个格式引入一下即可:

   implementation '包名:项目名:版本号'

截屏2020-09-27 下午4.10.11

最后同步一下项目,引入完成,完全可以正常使用!

结束语

  到此,AAR打包到本地Maven仓库的教程完毕,其实本地Maven仓库的AAR打包主要解决一个问题,就是AAR普通打包放到lib目录下使用是没有办法依赖第三方库的,比如我依赖OKhttp,如果普通的打包AAR放到lib目录下,OKhttp是不会被打进AAR的。但是如果把AAR发布到本地Maven仓库或者远程仓库,那么AAR会自动把第三方依赖也下载下来。
【demo地址】