Android 打包上传AAR文件到本地Maven仓库并且引用

1.前言

建议电脑端观看,多图慎入

平常项目中遇到的一些公共组件,公共模块,多个项目都在使用的情况下,我们一般有以下几种做法

1.整个module导入工程,如果module中有什么bug,修改了还要其他项目再重新添加进去,很不方便

2.module打包AAR,多个项目引用添加,如果有什么bug,修改了重新发给其他项目成员重新更新

3.使用Gradle Add Libay的方式 类似:implementation 'com.android.support:appcompat-v7:27.1.1' 的方式来
引用我们的module,如果有bug,只需要维护,修改的人直接重新上传module,我们修改版本号,重新bulid就可以更新module

从上面可以看到,第三种做法更佳,所以呢,接下来,往下看

2.How To Use

1.从文章标题知道,我们将要使用maven来管理我们的AAR文件,但是我们做Android开发也没有涉及到什么Maven相关的知识啊,怎么办呢,没关系,现在傻瓜式教学,首先看下图

这里用Rxjava举个例子,可以看到左边有很多的引用方式,apache maven ,apache Buildr,Gradle等引用方式,那么这maven引用和平时用Gradle引用又有什么关系呢?文章标题说上传到本地maven,那是不是就是用图上说的maven的方式去引用呢?别着急,接下来我就百度google一下,解决大家的问题,以及我也想知道,为什么上传到maven以后,可以通过gradle的方式来引用,哈哈。

结果如下:

1.首先呢,maven和Gradle都是构建工具,
2.我也没看明白,大概就是说,Gradle也是基于Maven来构建的,只是引用方式不同,maven采用xml的配置,gradle简化了这样的配置操作,一行代码可以搞定。

这里有一篇文章做了maven和Gradle的对比:Gradle vs Maven ComparisonMaven 和 Gradle 对比,里面大概讲了gradle的灵活性,性能,用户体验都比maven好,这也是google采用gradle作为Android的官方build Tools。

好了,上面讲了那么多题外话,不管怎么样(当然知其然更要知其所以然也很重要 调皮.jpg),接下来看看我们应该怎么用吧。

分享一下我在开始捣鼓这个东西的时候,我是怎么一个思路吧,既然我知道可以通过maven的方式管理AAR文件,那么我们接下来要做的事情就是

1.要拥有一个maven仓库,能够上传到maven

那么我们第一件事就是安装maven,这里nexus maven百度了解一下,那么我们就开始吧:

2.1 第一步

这里我选择Windows下载

  • 2.进入到你安装的目录,这里我最后逇目录是nexus-3.12.0-01-win64\nexus-3.12.0-01\bin 目录下执行 nexus.exe /run,然后等待安装,我这里已经安装好了执行nexus.exe /run是下面这个样子

  • 3.需要进入到nexus-3.12.0-01\etc文件下 ,按需修改nexus-default.properties配置文件,这里我的配置文件如下:

  • 4.然后可以使用http://127.0.0.1:8081的地址打开,然后右上角登录,账号默认admin 密码 admin123,登录进去的界面:

ok,到这里我们完成了第一阶段,安装了可以管理maven的这样一个平台。

2.2 第二步

既然已经安装好了,那么,我们也要有东西可以上传啊。那么我们肯定要有一个module啊,接下来我们新建一个简单的module测验

2.2.1 第一个新建model

上图可以看见,我们新建了一个很简单的module,里面添加了一个AAA的测试类,然后右边的文件证明这是一个apply plugin
是Android libary,就知道啥意思了吧,哈哈,现在我们有一个module,然后怎么上传到maven呢,这里有2种方式

2.2.2上传AAR包 做法1

2.2.2.1 创建,上传AAR

.首先生成一个AAR文件,执行gradle task-> build assembleRelease

打开我们的http://127.0.0.1:8081/这个网站,如果发现打不开了,估计是服务被关了,重新启动一下就好了,启动方式还是刚才安装的那个命令

打开cmd进入到安装目录下bin目录下打开 nexus.exe /run

打开以后按照如下做法

1.从左边切换到Browse菜单,然后点击maven-releases进入

第一次应该出现这样的界面

2.上传AAR文件

然后upload,会出现

点击View it now查看,

现在可以查看到我们上传的AAR咯

2.2.2.2 集成AAR

1.首先在我们需要引用项目的项目下的build.gradle文件下而不是最外层的build.gradle,添加

repositories {
    maven {
        url 'http://127.0.0.1:8081/repository/maven-releases'  //这个路径就是Browse下maven-release右边有一个copy按钮,复制出来的。
    }
}

然后添加

    implementation 'demo.xiaxiayige.com:testmaven:1.0.0@aar'

这里的组合就是刚才填写的 graoupId:artifactId:version这里注意需要后面跟上@aar,如果不跟上这个默认是去加载.jar的文件,就会出现找不到的情况,怎么样可以不加,后面会讲到。

2.重新sync一下,就会从maven里面去下载我们的AAR包到本地,接下来看下效果

我们使用了前面Module里面创建的一个AAA类里面的print方法,并且在测试类中能够正常打印

怎么样,是不是很溜啊,傲娇.jpg

2.2.3 上传AAR包 做法2

这种做法就比较easy了,直接看代码吧

1.首先我们修改我们的AAA类 添加一个方法

package demo.xiaxiayige.com.testmaven;

public class AAA {
    public static void print(String string){
        System.out.println("string = [" + string + "]");
    }

    public static boolean isEmpty(String str){
        return str==null || str.length()==0;
    }
}

2.然后在module的bulid.gradle下添加

apply plugin:'maven'

uploadArchives {
configuration = configurations.archives
repositories {
    mavenDeployer {
        repository(url: 'http://127.0.0.1:8081/repository/maven-releases/') {
            authentication(userName: 'admin', password: 'admin123')
        }
        pom.project {
            version '1.1.0'
            artifactId 'testmaven'
            groupId 'demo.xiaxiayige.com'
            packaging 'aar'
            description 'update version 1.1.0'
        }
    }
}
}

现在我们module的build.gradle 代码长这个样子

`apply plugin: 'com.android.library'
apply plugin:'maven' //新增
android {
    compileSdkVersion 27
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:27.1.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}


uploadArchives { //新增 ,因为Android Studio gradle 支持maven插件,所以可以添加此task
    configuration = configurations.archives
    repositories {
        mavenDeployer {
            repository(url: 'http://127.0.0.1:8081/repository/maven-releases/') {
                authentication(userName: 'admin', password: 'admin123')
            }
            pom.project {
                version '1.1.0' //版本名称
                artifactId 'testmaven'  //和前面网站上填写的一样
                groupId 'demo.xiaxiayige.com'  //和前面网站上填写的一样
                packaging 'aar' //填写aar
                description 'update version 1.1.0 add new method' //更新描述
            }
        }
    }
}

`
更多关于gradle maven插件 详情查看 Maven Plugin

最后我们执行uploadArchives task

ok 可以看见bulid success。我们再去网站上看看,有没有1.1.0版本的存在

然后再去引用项目的build.gradle 代码修改版本号,改为 implementation ‘demo.xiaxiayige.com:testmaven:1.1.0’,重新sync,

这个时候,可以发现后面不用添加@aar也可以引用成功

我们再去测试代码调用刚才新增的这样一个方法

嗯,真是溜呢。

到这里,基本上结束了。

3.结尾

惯例结尾 喜欢的点个赞

4.彩蛋

总结一下吧:

1.安装maven管理的一个工具nexus
2.制作AAR
3.网站上传AAR
4.代码上传AAR

猜你喜欢

转载自blog.csdn.net/xiaxiayige/article/details/80636091