如何在Android的AAR格式SDK中引入外部Jar包?Gradle配置咨询
解决Android AAR SDK调用外部Jar库的Gradle配置问题
首先得明确:Gradle里并没有像exclude那样直接给远程依赖绑定本地Jar的include语法,你提到的那种implementation('de.xx.sdk:xxx-android-v1.0.0') { include group: 'libs/xxxx-v1.0.0' }写法是行不通的——include更多用于多项目构建里包含子模块,或是在依赖筛选里做细粒度的范围限定,和本地Jar绑定远程SDK的场景不匹配。
下面根据你的角色场景,给出两种可行的解决方案:
如果你是SDK开发者(要让AAR SDK依赖本地Jar)
在SDK模块的build.gradle(或build.gradle.kts)中,直接把本地Jar作为项目依赖引入:
// Groovy语法 implementation files('libs/xxxx-v1.0.0.jar') // Kotlin DSL语法 implementation(files("libs/xxxx-v1.0.0.jar"))
如果是本地调试,宿主项目只要依赖你的SDK模块,Gradle会自动传递这个Jar依赖;如果要把SDK发布到远程仓库,需要额外配置将Jar一并上传(比如通过maven-publish插件处理)。
如果你是宿主项目开发者(使用已有AAR SDK,需补充外部Jar)
直接在宿主项目的build.gradle中同时声明远程SDK依赖和本地Jar:
// 引入远程SDK implementation 'de.xx.sdk:xxx-android-v1.0.0' // 引入本地Jar库 implementation files('libs/xxxx-v1.0.0.jar')
Gradle会将这两个依赖都加入项目类路径,AAR SDK就能正常调用Jar中的类了。
额外提示:处理依赖冲突
如果SDK本身依赖了和本地Jar重复的库,可以用你熟悉的exclude语法排除冲突部分,示例:
implementation('de.xx.sdk:xxx-android-v1.0.0') { exclude group: 'com.example', module: 'conflicting-library' } implementation files('libs/xxxx-v1.0.0.jar')
内容的提问来源于stack exchange,提问作者Souheib Selmi




