You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:18:00