如何强制 Flutter 更新我的版本和内部版本号?
Posted
技术标签:
【中文标题】如何强制 Flutter 更新我的版本和内部版本号?【英文标题】:How to force Flutter to update my version and build number? 【发布时间】:2020-09-07 09:29:39 【问题描述】:-
我已将 pubspec.yaml 中的版本更改为 1.0.1+1(从 1.0.0+3)
flutter clean
flutter build ios
当我打开 [project]/ios/Runner.xcworkspace 时,它仍然显示 1.0.0 版本。
我做错了什么?如何强制 Xcode 从 CLI 或 pubspec.yaml 更新我的版本?
这就是我的 Info.plist 的样子:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Name</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Sundee</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Your location will be used to determine sun angle.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Your location will be used to determine sun angle.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Your location will be used to determine sun angle.</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
【问题讨论】:
【参考方案1】:我明白了。这是因为我在 Info.plist 中的行看起来不像这样:
<key>CFBundleShortVersionString</key
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
有人知道为什么我有$(MARKETING_VERSION)
和$(CURRENT_PROJECT_VERSION)
吗?
【讨论】:
谢谢,我也想知道。我使用颤振创建项目,但一开始我使用的是旧版本的颤振 cli。这可能是问题所在。但是,还有另一个问题是,当我更新 pubspec.yml 并运行包获取时,它不会增加构建版本。有什么想法吗? 不知道。我知道 Xcode 可以自动增加内部版本号,但不知道 Flutter 也能做到这一点。 实际上他们似乎不打算允许内部版本号的自动增加:github.com/flutter/flutter/issues/41955【参考方案2】:同样的事情发生在我身上。
我认为当我使用xcode接口时他更改了文件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)";
这出现了 3 次
【讨论】:
【参考方案3】:你还需要获取包。
CFBundleShortVersionString 是版本的公共“名称”(例如:“2.5”或“3.8.1”)。您必须在每次发布时增加它。
CFBundleVersion 是私有内部版本号。在 AppStore 上看不到它。您必须在每次上传时增加它。这意味着如果你在一个二进制文件上线之前拒绝它,并且你想上传一个新的二进制文件,它将具有相同的
CFBundleShortVersionString 但必须有更高的 CFBundleVersion(例如:public “2.5”、private “2.5”,然后二进制拒绝,然后重新上传 private “2.5.1”)
【讨论】:
以上是关于如何强制 Flutter 更新我的版本和内部版本号?的主要内容,如果未能解决你的问题,请参考以下文章