Flutter:升级Play商店的版本代码

Posted

技术标签:

【中文标题】Flutter:升级Play商店的版本代码【英文标题】:Flutter: upgrade the version code for play store 【发布时间】:2020-12-15 11:14:24 【问题描述】:

我已经用flutter在play store上发布了一个应用程序,现在我想上传一个新版本的应用程序。我正在尝试更改版本代码:

flutter build apk --build-name=1.0.2 --build-number=3

或像这样更改 local.properties

 flutter.versionName=2.0.0
 flutter.versionCode=2
 flutter.buildMode=release

但每次我在 Play 商店中遇到错误时

您必须为您的 APK 或 android App Bundle 使用不同的版本代码,因为代码 1 已分配给另一个 APK 或 Android App Bundle。

【问题讨论】:

【参考方案1】:

pubspec.yaml 中更新 version:A.B.C+X

对于 Android:

A.B.C 代表versionName1.0.0

X+后面的数字)代表versionCode123

不要忘记在这一步之后执行flutter build apkflutter run,因为:当你在pubspec文件中更新这个version之后运行flutter build apkflutter runversionNamelocal.properties 中的 versionCode 被更新,稍后在您使用 flutter build apkflutter run 构建您的颤振项目时在 build.gradle (app) 中获取它们最终负责设置 versionNameversionCode 用于 apk。

对于 iOS:

A.B.C 代表CFBundleShortVersionString1.0.0

X+后面的数字)代表CFBundleVersion123等。

不要忘记在这一步之后执行flutter build ipaflutter run

【讨论】:

这是正确答案,应该是公认的答案。 谢谢!对于android,关键是在更改pubspec.yaml后运行flutter run,否则android studio将使用基于local.properties的旧版本代码构建apk / aab 所以在稍后的某个时间点,应用程序可能看起来像 5.1.3+201 对吧? 对于每个版本,版本代码也必须更改。例如,您不能简单地将版本名称从 1.0.0+1 更改为 1.1.0+1。必须改成1.1.0+2 @Neail 是的,版本代码是整数值或您建议的发布计数器。版本代码只能分配给 PlayStore/AppStore 上的一个构建。因此,如果您已经上传了版本号 1,则永远不能上传具有相同编号的另一个版本,无论它正在审核中还是已发布。如果您愿意,可以保持版本名称不变。【参考方案2】:

想出了这个。 文档不是直截了当的

在您的pubspec.yaml 中更改这样的版本

version: 1.0.2+2

东西在哪里 VER_NAME+VER_CODE

【讨论】:

我不敢相信official delpoyment documentation 中没有提供这一点。在这里找到答案真是令人沮丧... 这里的策略是对的,但是+后面的整数是versionCode,而不是versionName。 正如@DanielAllen 之前所说:versionNamebefore +versionCode +之后 1.0.2 是版本名称,+2 是版本代码。谢谢!这对我帮助很大! 我的 pubspec.yaml 文件中有版本:1.0.0+1,我进行了构建并上传到 Play 商店。但是在 play store 版本代码显示为 2001。后来我在 pubspec 中编辑到 version: 1.0.0+2 并进行了构建,这个版本在 play store 中显示版本代码 2002。这是怎么发生的?在 android 本地属性 versionName=1.0.0 和 versionCode=2【参考方案3】:

解决方案:

在 pubspec.yaml 中添加这个(可能在描述之后,与描述相同的缩进,名称等...):

version: 2.0.0+2

然后包是否进入flutter本地目录(不要忘记这样做)

解释:

加号之前是版本名称,之后是版本代码。所以这里的版本代码是 2,名称是 2.0.0。每当您对 Flutter 应用程序进行更新时,请务必强制更改版本代码!

附加信息:

每当构建 android 应用程序时,android/app/ 中的 build.gradle 都会查找版本代码和名称。这通常位于 local.properties 中,每次更改 flutter pubspec.yaml 时都会更改

【讨论】:

【参考方案4】:

应用程序的默认版本号为 1.0.0。要更新它,请导航到 pubspec.yaml 文件并更新以下行:

version: 1.0.0+1

只需将该版本更改为(根据您的需要)

version: 1.0.1+2

版本号是三个用点分隔的数字,如上例中的 1.0.0,后跟可选的内部版本号,如上例中的 1,用 + 分隔。

在 Flutter 的构建中,版本和构建号都可以通过分别指定 --build-name 和 --build-number 来覆盖。

在 Android 中,build-name 用作 versionName,而 build-number 用作 versionCode。欲了解更多信息,请参阅Version your app

更新pubspec file 中的版本号后,从项目顶部运行flutter pub get,或使用IDE 中的Pub get 按钮。这会更新local.properties 文件中的versionNameversionCode,稍后在您重建Flutter 应用程序时会在build.gradle 文件中更新。

【讨论】:

【参考方案5】:

如果您已经更改了 versionCode,可能是因为 Play 管理中心已经接受了您的构建。

不要点击上传,而是点击从库中选择,然后选择已经发送的版本。

【讨论】:

这个对我有用......在已经尝试使用 5 个不同的版本号上传之后。真傻。 这可以工作,如果你希望你的旧版本公开显示,这是以前上传并被谷歌接受的。但是,如果您进行了更改并想要一个新版本,则必须更改某些答案中提到的 versionCode,并且 google 不得显示该警告,那么只有您确定您的新版本已上传并被接受。【参考方案6】:

更新应用的版本号 该应用程序的默认版本号为 1.0.0。要更新它,请导航到 pubspec.yaml 文件并更新以下行:

版本:1.0.0+1

版本号是三个用点分隔的数字,如上例中的 1.0.0,后跟可选的内部版本号,如上例中的 1,用 + 分隔。

在 Flutter 的构建中,版本和构建号都可以通过分别指定 --build-name 和 --build-number 来覆盖。

在 Android 中,build-name 用作 versionName,而 build-number 用作 versionCode。有关详细信息,请参阅 Android 文档中的应用版本化。

【讨论】:

这里是官方部署文档的链接:Updating the app’s version number【参考方案7】:

适用于 Android

“X.Y.Z+n”这里“x.y.z”代表版本名称,“n”代表版本号。 将进行以下更改-

    pubspec.yaml 中更改您的版本号。 通过运行flutter pub get 命令更新您的local.properties。 现在通过运行 flutter build apkflutter build appbundle 命令构建您的 apk 或应用程序包。

【讨论】:

【参考方案8】:

我认为没有人真正回答过这个问题。很多建议正在更新 pubspec 中的版本。但根据您的部署,您可能不会使用这些值。

flutter build --build-number=X --build-name=Y

X 被用作您的版本代码 Y 被用作您的版本名称

要测试只需运行 build 并检查 local.properties

【讨论】:

【参考方案9】:

文档说构建参数应该覆盖pubspec.yml

版本和内部版本号都可能在 Flutter 中被覆盖 通过分别指定 --build-name 和 --build-number 来构建。

https://flutter.dev/docs/deployment/android#updating-the-apps-version-number

【讨论】:

【参考方案10】:

检查

android
//....
  defaultConfig 
  //....
  version code:2
  

在 android>app>项目根文件夹中的 Build.gradle

【讨论】:

【参考方案11】:

你仍然可以通过在 android/app/build.gradle 中覆盖来完全做你自己的事情:

def flutterVersionCode def flutterVersionName

你自己的价值观。

【讨论】:

【参考方案12】:

第一个更改 pubspec.yaml 中的颤振版本 例如`版本 1.0.3+4

如果是 android,请转到 local.properties,而不是更改版本名称和代码,如 Flutter 版本代码和名称。

如果是 ios 则转到 generated.xcconfig 而不是 chnage FLUTTER_BUILD_NAME=1.0.3 FLUTTER_BUILD_NUMBER=4`

【讨论】:

local.properties 和 generated.config 中无需更改【参考方案13】:

我遇到了同样的问题,我通过重启 Android Studio 解决了。

【讨论】:

【参考方案14】: 在 pubspec.yml version: 1.0.0+1 更改为version: 1.0.0+2 flutter build ios --release-name --release-number 将更新ios版本 flutter pub get && flutter run 将更新 android 版本 (android/local.properties)

【讨论】:

额外的一点,只是颤振 pub get 不能解决。不错的收获。【参考方案15】:

这对我有用! 我将第一个应用程序识别为 Default Version Name 1.0.0 Version Number 1 所以这意味着 1.0.0+1

我在 pubspec.yaml 中写为 1.0.0+2 后更新了我的应用程序。

【讨论】:

【参考方案16】:

可能对登陆这里的其他人有所帮助的东西,Play 商店只会孤立地查看versionCode。因此,如果您已将 versionNumber 从例如 1.0.0+1 更新为 1.1.0+1,Play Store 将抛出 versionCode 未更改的错误。因此,无论您的 versionNumber 是什么,您还必须更改您的 versionCode - 例如,从 1.0.0+1 更改为 1.1.0+2

【讨论】:

【参考方案17】:

任何解决方案都不适用于App Bundle,我改为APK,版本没有问题。

不清楚为什么。

【讨论】:

【参考方案18】:

您可以更新local.properties 文件,

【讨论】:

【参考方案19】:

所有这些答案都反映了官方文档,这就是我设置versionNameversionCode 的方式。但是当我上传我的构建时,我得到了与帖子作者报告的相同的错误。

我以前在 Play 商店中的版本代码显示为 4 (0.0.2) ...我已经习惯了 iOS 的工作方式,所以这对我来说很奇怪。括号中的数字应该是build/code 数字,主数字是实际的version 数字。必要时增加内部版本号,而不必增加 version(因为没有重大变化)。

因此,当我尝试使用新版本号上传 0.0.3+1 以增加此新版本时,它抱怨 1 已被使用。

那么这在 Play 商店中是如何运作的呢?我也很困惑。

【讨论】:

我遇到了同样的问题/困惑。然后我意识到top answer from Rohan Taneja 中提到的 - 在 pubspec.yaml 中进行更新之后,1)运行pub get,2)然后运行构建完成。然后我看到local.properties 中的值已更新,并且 GPlay 接受了上传。一开始我并没有意识到,这是 关键细节/步骤 在 cmets 中多次重复该答案

以上是关于Flutter:升级Play商店的版本代码的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 in_app_update 强制用户从 Flutter 中的 Play 商店更新应用

从 Google Play 商店升级应用,显示为“打开”

Flutter App 从 Play 商店下载后显示空白屏幕,尽管我使用了 SHA-1

将 Flutter 应用上传到 Google Play - 请升级到账单库版本 3 或更高版本以发布此应用。详细了解计费库 3

Flutter 1.7 正式版发布

在 Flutter 中从 Play 商店获取产品时应用内购买崩溃