Flutter技术问询:package_info_plus在Windows平台从何处获取应用版本信息?
Flutter Windows平台package_info_plus获取版本不符的问题解决
我之前也碰到过这个情况,核心原因是Windows平台下package_info_plus读取版本信息的来源和iOS/macOS/Android不同,下面给你拆解原因和解决方法:
为什么Windows版本不符?
在iOS、macOS和Android平台,package_info_plus会直接读取pubspec.yaml里的version配置,但Windows平台默认是读取项目中windows\runner\Runner.rc文件里的版本字段,而这个文件不会自动同步pubspec.yaml的配置,所以你获取到的版本和预期不一致。
两种解决办法
1. 手动修改Runner.rc文件
找到你的Flutter项目路径下的windows\runner\Runner.rc,打开后找到以下内容:
// 版本数字部分 FILEVERSION 1,0,0,0 PRODUCTVERSION 1,0,0,0 // 字符串版本部分 VALUE "FileVersion", "1.0.0.0" VALUE "ProductVersion", "1.0.0.0"
把这些数值改成和你pubspec.yaml里的version: 1.1.8+16对应:
FILEVERSION和PRODUCTVERSION的格式是主版本,次版本,修订版本,构建号,对应你的1,1,8,16FileVersion和ProductVersion改成1.1.8.16
修改保存后,重新运行Windows应用,package_info_plus就能获取到正确的1.1.8+16(你的代码里拼接后就是这个结果)。
2. 构建时自动同步版本
如果你不想每次手动修改,可以在构建Windows应用时用Flutter的命令行参数指定版本,这样会自动更新Runner.rc里的配置:
flutter build windows --build-name=1.1.8 --build-number=16
这里的--build-name对应pubspec里的版本号(1.1.8),--build-number对应后面的构建号(16),构建完成后,Windows应用的版本信息就会和pubspec一致了。
另外,你的Dart代码本身是没问题的,只要Windows平台的版本源正确,就能得到预期的version + '+' + buildNumber结果。
内容的提问来源于stack exchange,提问作者user17336890




