aar文件是什么 后缀arr的文件打开方式

aar文件是什么 后缀arr的文件打开方式

一、背景:

我们的业务是对开发者提供一个sdk,在android上来说是一个aar包的依赖。

为了方便开发者集成,最早采用了大家最常用的jcenter来发布,这样开发者的集成成本会更低一些。

后来jcenter官宣要关闭服务,为了更好地服务客户,我们自己部署了一套maven系统,来实现

最开始这个maven系统只有我们部门在使用了,我就推动了这个事情的落地

现在有不少其他的部门也开始使用这个系统。

有很多同学都是第一次使用,对maven的原理和上传下载还不是很清晰,会导致增加大家的工作量,

为了方便大家后续使用,写这个文章进行简单的介绍,满足基本的业务需求,深入的需求需要大家再发掘

二、原理1、整个maven可以分成两大部分pom文件其中pom是一个配置文件,可以配置项目信息、项目依赖信息、开源协议信息、开发者信息、源码信息 等aar(jar等)资源文件

其中的aar(jar等)资源文件就是比较简单的内容,就是一个被存储的文件,maven支持存储在本地也可以在s3上进行备份存储

2、整个的流程

三、maven仓库创建

1、创建仓库流程

创建仓库分为四步,分别是

点击设置按钮 上图1的位置选择仓库选项,上图2的位置点击创建仓库,上图3的位置,在里面创建一个maven仓库就行(可参考下面的2、创建maven的详细步骤)创建成功后,找到对应的name后面的url下的copy,会显示出来仓库的url,这个url后面会使用2、创建maven的详细步骤选择仓库类型,可以选择hosted,如果有特殊需求,可以研究下差异

填写资料

填写仓库的名字和存储的位置,其他参数感兴趣的,可以自行独立研究

点击底部的创建按钮完成四、生成端配置

假设已经在maven仓库进行创建了仓库

1、配置文件

假设文件名字为 UploadMaven.gradle

apply plugin: 'com.android.library'apply plugin: 'maven-publish'def siteUrl = 'http://www.baido.com' // 项目主页def gitUrl = 'https://github.com/demo/demo.git' // 项目的git地址Properties properties = new Properties()properties.load(project.rootProject.file('local.properties').newDataInputStream())afterEvaluate {    publishing {        repositories {            def Nexususername = properties.getProperty("Nexus.name")            def Nexuspassword = properties.getProperty("Nexus.password")            //release仓库            maven{                //仓库的名字和地址                name = "demo_release_repo"                url="http://maven-android.demo.com/repository/demo/"                // 仓库用户名密码                credentials {                    username = Nexususername                    password = Nexuspassword                }            }            //快照仓库            maven{                //仓库的名字和地址                name = "demo_snapshot_repo"                url="http://maven-android.demo.com/repository/demo_snapshot/"                // 仓库用户名密码                credentials {                    username = Nexususername                    password = Nexuspassword                }            }        }        publications {            // 创建名为 release的任务            release(MavenPublication) {                // 需要使用的变体,假设有free和pay两个变体,可以选择一个                from components.free                // 文件的groupId                groupId = 'com.mbridge.msdk.support'                //文件的名字                artifactId = project.name                //对pom进行的操作                pom.withXml{                    Node pomNode = asNode()                    pomNode.dependencies.'*'.findAll() {                        //将所有的默认依赖移除                        //it.parent().remove(it)                    }                }                pom {                    name = artifactId                    url = siteUrl                    licenses {                        //证书说明                        license {                            name='The Apache Software License, Version 2.0' // 开源协议名称                            url='http://www.apache.org/licenses/LICENSE-2.0.txt' // 协议地址                        }                    }                    developers {                        developer {                            id='demo_id'    // 账号                            name='demo'   // 名称                            email='demo@demo.com' // 邮箱地址                        }                    }                    //软件配置管理                    scm {                        connection=gitUrl                        developerConnection=gitUrl                        url=siteUrl                    }                }            }        }        }    }
2、maven的账号和密码

可以写在local.properties文件中

Nexus.name=demo_nameNexus.password=demopassword
3、执行gradle任务

生成pom的任务

generatePomFileForReleasePublication

推送到远端的任务(以推送release任务为例)

publishReleasePublicationToDemo_release_repoRepository

可以拆解为:

publish+publications的名字,首字母大写+PublicationTo+maven的name,首字母大写+Repository

4、执行顺序生成aar执行生成pom的任务执行推送任务五、总结

如果没有意外的话,这样就会传到maven上去,给用户使用就可以了