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

Android Studio 3.1中设置Release版本名称覆盖失败求助

Android Studio 3.1升级后版本名修改代码报错的解决办法

之前我一直用这段代码在release构建时给所有应用变体的版本名加上构建时间戳,方便区分不同的发布包:

android.applicationVariants.all { variant -> 
    if (variant.buildType.name == "release") { 
        variant.outputs.all { output -> 
            output.setVersionNameOverride(output.processResources.versionName + "-build" + new Date().format('yyyyMMddHHmmss')) 
        } 
    } 
}

结果把Android Studio升级到3.1之后,直接报了**配置项目':app'时出现问题。无法获取未知属性...**的错误,折腾了好一会儿才找到解决办法,分享给大家:

问题原因

Android Gradle Plugin(AGP)3.0+版本对API做了不少调整,之前通过output.processResources.versionName获取版本名的方式已经失效了,而且setVersionNameOverride的调用方式也有变化,这才导致了报错。

修复后的代码

把代码改成下面这样就可以正常运行了:

android.applicationVariants.all { variant ->
    if (variant.buildType.name == "release") {
        variant.outputs.all { output ->
            // 获取原始的版本名称
            def originalVersionName = variant.versionName
            // 拼接上当前构建的时间戳
            def newVersionName = "${originalVersionName}-build${new Date().format('yyyyMMddHHmmss')}"
            // 设置新的版本名
            output.versionNameOverride = newVersionName
        }
    }
}

关键修改点

  • 直接从variant.versionName获取原始版本名:AGP 3.0+之后,output对象不再直接暴露processResources的可访问属性,所以换了更直接的获取方式
  • 改用属性赋值output.versionNameOverride:替代之前的setVersionNameOverride()方法,这是AGP更新后的标准写法

额外提示

如果修改后还是有问题,可以试试:

  • 先同步项目(点击工具栏的Sync Project with Gradle Files按钮)
  • 清理构建缓存后重新构建(Build -> Clean Project,再Build -> Rebuild Project)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:58:43