当我运行
flutter build run
时,我希望版本和内部版本号能够在 pubspec.yaml 1.1.5+10 中使用我的版本
但是 10 总是恢复为 1。这在 info.plist 中设置正确
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
但是当我打开 xcode v12.2 时,它会变
$(FLUTTER_BUILD_NUMBER)
回到
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
xcode 本身正在以某种方式恢复 info.plist 中的这些更改。
[✓] Flutter (Channel stable, 1.22.2, on Mac OS X 10.15.7 19H2, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 12.2)
[!] Android Studio (version 4.1)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[!] Connected device
! No devices available
这是 ios/Runner.xcodeproj/project.pbxproj 文件的问题
我用这个解决了
更新我的版本和内部版本号
更改此:
CURRENT_PROJECT_VERSION = your buildnumber
MARKETING_VERSION = your version
至:
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
MARKETING_VERSION = "$(FLUTTER_BUILD_NAME)";
Xcode中的信息不会因为你更新并保存pubspc.yaml而更新。您必须针对 iOS 重新构建才能使更改反映在 Xcode 中。
这是因为 Flutter 构建/运行 CLI 覆盖了
pubspec.yaml
中的 iOS/Android 构建版本。
在我的例子中,我使用手动构建(fastlane的gym命令)并且构建版本与以前相同。
使用
flutter build
进行构建,否则您必须手动覆盖版本。
我的解决方案是转到位于此地址的文件:
./ios/runner.xcodeproj/project.pbxproj
打开后,文件定义了以下值:
FLUTTER_BUILD_NUMBER = 5
我用这个替换它:
FLUTTER_BUILD_NUMBER = "$(FLUTTER_BUILD_NUMBER)";
我使用口味获得了应用程序中工作的版本号。