根据网上搜索结果,目前了解到的解决方法分两大类:
一、将远程依赖库的jar包下载到本地,然后拷贝到libs进行依赖替换远程依赖,之后再生成为aar文件时,就不会出现依赖库的调用类找不到的问题;
如果自己要集成的aar中包含有其他的aar文件,需要在引入我们自己集成的aar的时候也要额外引用所包含的aar文件,这样虽然繁琐但是能够解决问题。
二、创建本地或远程maven仓库,将包含.pom格式等相关文件上传到maven仓库,然后使用依赖库的方式进行依赖来解决这个问题;
1、本地maven仓库
我尝试的是创建并使用本地maven仓库,方式如下:
首先,在需要生成为aar的library的顶部加入下面这个代码
apply plugin: 'maven'
其次,在build.gradle中加入下面这段代码,说明见注释,它们与android{}标签同级
/**
* 下面为创建本地仓库进行的设置
* 1、groupId唯一标识符:包名com.android.dzrefresh 对应路径:com/android/dzrefresh
* 2、artifactId module名称:App 对应路径:com/android/dzrefresh/App
* 3、version版本号:1.0.0 对应路径:com/android/dzrefresh/App/1.0.0
* 4、packaging 类库类型
* 5、description 描述
* 6、repository本地仓库路径
*/
// mac中在Androidstudio的terminal界面执行./gradlew uploadArchives或者./gradlew -p cashier clean build uploadArchives --info命令
// 即可在下面的自定义仓库路径下生产相应aar文件,在其他工程中添加这个本地仓库
// 的引用即可
uploadArchives {
// configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: "file:///Users/mac/Desktop/localmaven/")//此为Mac上的路径方式
pom.project {
name 'test'
artifactId 'test'
groupId 'com.demo.aar'
version '1.0.1'
packaging 'aar'
description 'test'
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution 'repo'
}
}
}
}
}
}
之后再as的Terminal窗口运行上面提示的命令行:./gradlew uploadArchives,会出现进度条,在上传过程中会出现一些问题:
第一个问题是根目录build.gradle文件中gradle版本和依赖库build.gradle中设置的buildToolsVersion "28.0.3"版本不匹配问题,这个修改相关的版本号就行;
第二个问题是:
Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.
出现这个问题大家可以借鉴: https://www.cnblogs.com/johnjackson/p/14040958.html他的方法,我是用的是第三种,手动复制的,复制之后成功生成本地maven。生成之后需要在根目录的build.gradle文件中引用
maven{ url 'file:///Users/mac/Desktop/localmaven/'}
之后在需要生成aar的库build.gradle文件中引用本地库,内容如下:
implementation 'com.demo.aar:aar:1.0.1'
然后就按正常的步骤生成aar文件就可以了,至于如何生成aar文件可以查看https://blog.csdn.net/weixue9/article/details/79624845这篇文章。
2、上传到远程仓库的方式我没有尝试过,但是这个应该是没有问题的,目前我没有尝试;
关于如何创建本地仓库等内容,大家可参考网上内容;如果大家在使用本地仓库方法时能够成功,麻烦能留言交流下,谢谢。
待完善