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

如何将AAR库的versionName追加到应用的versionName中?

实现方案

这个需求完全可以实现,以下是两种常见场景的具体配置方法:

场景1:AAR为当前项目子模块

如果你的AAR模块和应用模块在同一个Android Studio工程中,可直接读取子模块的版本配置:

android {
    ...
    defaultConfig {
        ...
        versionName "1.2.3-" // app自身语义化版本
        // 替换下方的:my_aar_module为你的AAR模块实际名称
        versionNameSuffix project(':my_aar_module').android.defaultConfig.versionName
    }
}

如果使用Kotlin DSL,对应写法为:

android {
    defaultConfig {
        versionName = "1.2.3-"
        versionNameSuffix = project(":my_aar_module").extensions.getByType<com.android.build.gradle.LibraryExtension>().defaultConfig.versionName!!
    }
}

场景2:导入的是独立生成的本地AAR文件

如果AAR是单独生成后导入到项目的,可通过解析AAR包内的AndroidManifest文件获取版本名:

// 定义读取本地AAR版本名的方法,路径替换为你的AAR实际存放路径
def getLocalAarVersionName() {
    def aarFile = file("libs/my_library.aar")
    def tempUnzipDir = file("${buildDir}/intermediates/tmp/aar_manifest")
    tempUnzipDir.mkdirs()
    
    // 仅提取AAR中的Manifest文件到临时目录
    copy {
        from zipTree(aarFile)
        into tempUnzipDir
        include "AndroidManifest.xml"
    }
    
    def manifest = new XmlSlurper().parse(new File(tempUnzipDir, "AndroidManifest.xml"))
    return manifest.@versionName.text()
}

android {
    ...
    defaultConfig {
        ...
        versionName "1.2.3-"
        versionNameSuffix getLocalAarVersionName()
    }
}

注意事项

  • 本地AAR更新后,先执行clean操作再构建,即可自动读取最新的AAR版本名
  • 如果项目配置了多风味(productFlavors),可以对应调整AAR路径或模块取值逻辑,适配不同风味的版本拼接需求
  • 构建后可通过BuildConfig.VERSION_NAME或者生成的APK清单文件验证最终拼接结果

内容的提问来源于stack exchange,提问作者pion3k

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:36:00