You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在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

火山引擎 最新活动