Android Studio持续构建旧版本,修改Gradle版本信息仍无效求助
老哥,我之前也碰到过这种离谱的情况——明明改了versionCode和versionName,结果构建出来的还是带旧时间戳的老版本,清理重建也不管用。给你几个我亲测有效的排查和解决步骤:
检查所有build.gradle文件,别漏了根目录和模块配置
别只盯着app模块的build.gradle!很多项目会在根目录的build.gradle里用ext统一管理版本号(比如ext.versionCode = 14),如果这里没改,你单独改app模块的配置会被覆盖。另外还要检查flavor、buildType里有没有单独指定版本号,比如release变体里硬写了旧的versionCode,那全局配置也会失效。彻底清理构建缓存,别依赖AS的Clean Project
Android Studio的Clean Project有时候清不干净,试试手动删除这些目录:- 项目根目录下的
.gradle文件夹 - app模块下的
build文件夹 - 系统级的Gradle缓存(Windows:
C:\Users\<你的用户名>\.gradle\caches;Mac/Linux:~/.gradle/caches)
删完重启Android Studio,再执行Rebuild Project试试。
- 项目根目录下的
确认构建输出的包是新生成的
有时候你以为拿到的是新包,其实AS输出的还是旧路径的旧文件。去app/build/outputs/apk/release(或者aab目录)里看看文件的修改时间,是不是和你构建的时间一致?另外还要确认你选的构建变体是对的——比如是不是不小心选了debug变体,而你改的是release的配置?检查Manifest和代码里的版本号覆盖逻辑
如果AndroidManifest.xml里手动写了android:versionCode="14"和android:versionName="1.33",那Gradle的配置会被覆盖。要改成用占位符引用:<manifest android:versionCode="${versionCode}" android:versionName="${versionName}" ...>另外还要检查有没有代码动态修改BuildConfig的情况,比如某些逻辑在运行时覆盖了版本号。
用命令行构建排除AS UI缓存问题
有时候AS的界面缓存会误导人,试试在项目根目录执行命令行构建:- Mac/Linux:
./gradlew clean assembleRelease - Windows:
gradlew clean assembleRelease
构建完成后去输出目录看包的版本信息,这样能确认是不是Gradle配置的问题,还是AS本身的bug。
- Mac/Linux:
按这些步骤排查下来,大概率能找到问题所在——我当时就是漏改了根目录build.gradle里的统一版本号,折腾了好半天😂
内容的提问来源于stack exchange,提问作者Ovalman

