Flutter 不使用 pubspec.yaml 中的内部版本号

问题描述 投票:0回答:5

当我运行

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
flutter info.plist
5个回答
22
投票

这是 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)";


5
投票

我多次遇到类似的问题。我所做的是设置所有配置文件的生成配置 [PROFILE](调试、发布、配置文件)。

转到 XCode -> 运行器 -> 项目(运行器) -> 信息。

在目标级别,所有跑步者都使用 Pods-Runner.[PROFILE]。 在项目级别没有使用配置,所以我选择为所有生成。

我不知道此更改的实际影响是什么,但构建版本和名称现在是从 generated.xcconfig 文件中获取的。


4
投票

Xcode中的信息不会因为你更新并保存pubspc.yaml而更新。您必须针对 iOS 重新构建才能使更改反映在 Xcode 中。


2
投票

这是因为 Flutter 构建/运行 CLI 覆盖了

pubspec.yaml
中的 iOS/Android 构建版本。

在我的例子中,我使用手动构建(fastlane的gym命令)并且构建版本与以前相同。

使用

flutter build
进行构建,否则您必须手动覆盖版本。


0
投票

我的解决方案是转到位于此地址的文件:

./ios/runner.xcodeproj/project.pbxproj

打开后,文件定义了以下值:

FLUTTER_BUILD_NUMBER = 5

我用这个替换它:

FLUTTER_BUILD_NUMBER = "$(FLUTTER_BUILD_NUMBER)";

我使用口味获得了应用程序中工作的版本号。

© www.soinside.com 2019 - 2024. All rights reserved.