封装第三方库,如何优雅的依赖三方aar文件

·  阅读 1585
封装第三方库,如何优雅的依赖三方aar文件

当我们的 library 依赖第三方的aar文件的时候,在打包发布我们的library到maven仓库的时候, 第三方的aar文件是不会打包进去的,这个时候去引用我们的 library 库,就会报找不到第三方库中的 类 的问题,从而异常。

如下图,module 工程 Profiling 引用了 很多的 aar 文件:

image-20210802174300239

​ 图1

module 工程 Profiling 配置的 maven 上传:

apply plugin: 'maven'
uploadArchives {
    repositories {
        mavenDeployer {
            pom.groupId = 'com.mei.profiling'
            pom.artifactId = 'profiling'
            pom.version = '1.0.0'
            //上传到本地
            repository(url: uri('../repo'))
        }
    }
}
复制代码

在主工程引用 Profiling 库:

implementation "com.mei.profiling:profiling:1.0.0"
复制代码

运行工程的时候,当使用图1中 aar 中相关的类时,就会报找不到类的异常。

这是因为,我们在上传 profiling 工程到maven的时候,Profiling/libs文件下的aar文件,不会一起打包到 profiling的aar文件中。

那怎么解决这个问题呢?有两种方式:

  1. 把第三方aar文件,放入到主工程的libs文件夹下
  2. 把第三方aar文件,上传到我们自己的maven库中

一、在主工程的libs文件夹下,增加第三方aar文件


在主工程的libs文件夹下,增加第三方aar文件,解决 library 工程引用第三方aar文件,打包的时候,第三方aar文件不会打包进去,从而在使用的时候,导致无法找到第三方库的类的问题。

1、在主工程的libs文件夹下,增加第三方aar文件

如:

image-20210802180335631

2、修改build.gradle,引用第三方aar文件:

dependencies {
    implementation fileTree(dir: "libs",includes: ['*.jar','*.aar'])
}
复制代码

增加 '.aar' 依赖文件类型。

这种方式可以解决找不到第三方类的问题,但这种不够优雅,封装一个 sdk,就是为了聚合代码,而现在这种,就不能达到这个目的了。

二、上传第三方aar到私有maven库,并引用


除了第一种方式解决之外,第二种方式就是把 第三方的 aar 文件上传到私有的 maven 库中,这样就可以直接通过依赖的方式引入 第三方 aar 文件了。

1、安装 Apache Maven 工具

1-1、安装 Apache Maven 工具

要想把 第三方的 aar 文件上传到 maven 私有库中,需要安装 Apache Maven 工具,如:

image-20210802185905781

下载zip包即可。

下载成功之后,解压文件到自己的程序安装目录(任意目录),如我的安装目录为:

/Users/mei/Applications/apache-maven-3.8.1

解压就可以了,不需要其他的安装步骤。

1-2、配置环境变量

/Users/mei/Applications/apache-maven-3.8.1/bin 目录,配置到环境变量中,这样就方便使用 maven 相关的命令了。

配置完环境变量之后,执行命令:

mvn -v

如果能打印出 Apache maven 的版本信息,就说明环境变量配置成功了。如执行上面命令打印的信息如下:

Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)

Maven home: /Users/mei/Applications/apache-maven-3.8.1

Java version: 1.8.0_291, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/jre

Default locale: zh_CN, platform encoding: UTF-8

OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"

2、上传第三方 aar 文件到私有 maven 库

安装好 Apache Maven 库之后,就可以通过 maven 相关的命令上传 第三方的 aar 文件了。步骤如下:

  1. 在 settings.xml 文件中,配置maven用户信息
  2. 执行上传命令

2-1、在 settings.xml 中配置私有 maven 的用户信息

把 aar 文件上传到私有 maven 库中,需要校验用户的信息,即 用户名和密码。

打开上面 Apache Maven 的安装目录,打开 conf 文件夹里面的 settings.xml 文件,如:

/Users/mei/Applications/apache-maven-3.8.1/conf/settings.xml

增加 server 标签,如:

  <servers>
      <server>
        <id>releases</id>
        <username>android-jinchuang</username>
        <password>jinchuang</password>
      </server>
      <server>
        <id>snapshots</id>
        <username>android-jinchuang</username>
        <password>jinchuang</password>
      </server>
  </servers>
复制代码

2-2、执行上传命令

mvn deploy:deploy-file -DgroupId=com.mei.aspectj -DartifactId=aspectj -Dversion=1.0.0 -Dpackaging=aar -Dfile=/Users/sentinel-annotation-aspectj-1.4.0.aar -Durl=https://xxx.com:8983/repository/maven-releases -DrepositoryId=releases
复制代码

参数说明:

mvn deploy:deploy-file

-DgroupId=com.mei.aspectj // groupId,可以按自己喜好定义

-DartifactId=aspectj // artifactId

-Dversion=1.0.0 //version 版本号

-Dfile=/Users/sentinel-annotation-aspectj-1.4.0.jar //jar包路径及jar包文件名

-Dpackageing=aar //上传文件的格式

-DpomFile=pom.xml // 重点在这, 必须单独上传jar中的pom.xml,如没有依赖其他的库,则可以不用添加

-DrepositoryId=release // 连接maven私服的登录名及密码, 在maven > settings.xml 中配置好的

-Durl=xxx.com:8983/repository/… //上传的私服路径及目录

执行上面的命令,如果成功的话,就会输出如下信息:

image-20210802203832359

这就代表, aar 文件上传到 maven 成功了。打开 maven 仓库,在releases分组下,就可以看到我们上次的 aar 文件了。

下面就可以通过依赖引入的方式引入到我们的sdk了,如:

implementation 'com.mei.aspectj:aspectj:1.0.0'
复制代码

这样就非常优雅的解决第三方 aar 文件 的依赖问题。

参考博客:

分类:
Android
标签:
分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改