使用最新Android Studio新建的Compose 工程,当我尝试访问版本号时出现了如下错误
Unresolved reference 'VERSION_NAME'.
对应的环境:
gradle版本:8.7
gradle插件版本:8.5.2
分析
这和BuildConfig找不到不同,BuildConfig找不到只需要在gradle中添加
android {
...
buildFeatures {
buildConfig = true // 需要buildconfig
compose = true // compose布局
aidl = true //如需要使用aidl,添加该选项
}
...
}
即可。
现在问题是BuildConfig找得到,而是缺少部分字段。
排查过程
去网上搜索了一下资料,发现有人说要用
1. 我有其他项目能正常访问VERSION_NAME,使用的是8.5.1,会不会是版本问题呢?
我将版本降级到8.5.1,还是没有VERSION_NAME生成。
2. 查看老的项目,也没有关于buildconfig更多的特殊配置了,查看gradle.properties里面多了一个enableJetifier=true的配置,添加该配置重试,仍然找不到VERSION_NAME
3. 将老项目gradle所有插件都升级到最新版本,和新项目保持一致,生成的BuildConfig中仍然有VERSION_NAME,这就很奇怪了。。。一般这个就是配置问题,同样的版本同样的配置怎么老工程怎么就可以呢。。。
4. 会不会是kotlin gradle脚本特有问题呢?
理论上不会,但验证一下更靠谱。试了一下另外一个项目(也用的kotlin脚本),更新gradle到最新,成功生成了VERSION_NAME
5. 我再次回到本项目,突然发现 BuildConfig 路径不太对,怎么指向了 mmkv 库?删掉该import,重新导入当前app的BuildConfig,问题解决。
吐血。。。没想到最后原因竟是一个低级问题。
总结
该问题的处理方法有以下几种方式:
1. 修改buildFeatures,重新编译。最简单的方法。
如已经修改了buildFeatures还有错误,检查导入的BuildConfig路径是否正确
2. 通过PackageManager获取自身app的版本号。我目前没有采用,个人觉得有点繁琐。
个人一般都会优先使用最新的gradle插件,如果大家有什么问题,欢迎留言,一起探讨探讨呀~