如何将aar设为Android库默认发布构件,无需加@aar即可依赖
问题根因
你发布的Android库对应的Maven元数据(pom文件)中,默认的打包类型(packaging)为jar,Gradle拉取依赖时默认优先查找jar包,找不到对应jar包就会报错,必须手动加@aar后缀强制指定拉取aar类型构件。
调整方案
只需在发布配置的pom闭包中,显式指定打包类型为aar即可,修改后的完整配置如下:
apply plugin: 'maven-publish' task androidSourcesJar(type: Jar) { archiveClassifier.set('sources') if (project.plugins.findPlugin("com.android.library")) { from android.sourceSets.main.java.srcDirs from android.sourceSets.main.kotlin.srcDirs } } afterEvaluate { publishing { publications { release(MavenPublication) { groupId GROUP_ID artifactId ARTIFACT_ID version VERSION_NAME from components.release artifact androidSourcesJar pom { packaging = 'aar' // 新增这行配置,显式指定打包类型为aar name = ARTIFACT_ID description = DESCRIPTION url = 'library url' licenses { license { name = 'License' url = 'license url' } } developers { developer { id = 'dev id' name = 'dev name' email = 'dev mail' } } scm { connection = 'url.git' developerConnection = 'url.git' url = 'url.git' } } } } repositories { maven { url MAVEN_REPOSITORY_URL credentials { username = USER_NAME password = PASSWORD } } } } }
注意事项
- 配置修改完成后需要重新发布版本到Sonatype服务器,新发布的版本即可直接通过
implementation 'com.companyname.android:library-name:1.0.0'方式依赖,无需加@aar后缀 - 该配置同时保留了依赖传递性:如果你的库本身依赖了其他三方库,不加
@aar的依赖方式会自动拉取这些传递依赖,不需要使用者手动额外引入 - 如果使用AGP 7.0及以上版本,无需额外配置
publishNonDefault,直接使用components.release即可正确关联aar构件
内容的提问来源于stack exchange,提问作者Nour El-Deen Abou El-Kassem
相关产品推荐
相关产品推荐

