最近在做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