最近在做SDK,打包发布功能组件为AAR给第三方使用,遇到两个依赖冲突问题,专门记录一下😁
Add build dependencies | Android Developers
AAR组件内第三方Jar包冲突
组件内使用了第三方Jar包,生成AAR拿给第三方使用刚好对方项目也使用了相同的Jar包,引发了依赖冲突,为了彻底解决依赖问题 直接在组件中将第三方Jar依赖传递关闭
**注释下面这行代码,很重要**
//implementation fileTree(include: ['*.jar'], dir: 'libs')
//通过compileOnly打包移除第三方Jar包依赖传递
compileOnly files('libs/XXX.jar')
有两个情况需要特殊注意:
AAR组件内第三方依赖传递问题
组件内使用了第三方远程依赖会报错找不见相应的class,为此我们可以通过发布组件到公共仓库
创建打包发布gradle脚本 publish.gradle脚本
//////// 打包发布配置开始 ////////
apply plugin: 'maven'
ext {
// 从Github上clone下来的项目的本地地址
//这里指定的就是刚刚新建项目后clone下来的在本地的路径
GITHUB_REPO_PATH = "/Users/xxx/Desktop/xxx/xx"
}
uploadArchives {
repositories.mavenDeployer {
def deployPath = file(project.GITHUB_REPO_PATH)
repository(url: "file://${deployPath.absolutePath}")
pom.project {
groupId project.PUBLISH_GROUP_ID
artifactId project.PUBLISH_ARTIFACT_ID
version project.PUBLISH_VERSION
}
}
}
// 源代码一起打包
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
artifacts {
archives androidSourcesJar
}
在项目gradle.properties文件下定义变量
//发布版本号 每次发布修改
VERSION_NAME=1.0.0
//组名
GROUP_ID=com.xx.sdk