如何将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
相关产品推荐
相关产品推荐

