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
代表versionName
如1.0.0
。
X
(+
后面的数字)代表versionCode
如1
、2
、3
等
不要忘记在这一步之后执行flutter build apk
或flutter run
,因为:当你在pubspec
文件中更新这个version
之后运行flutter build apk
或flutter run
,versionName
和 local.properties
中的 versionCode
被更新,稍后在您使用 flutter build apk
或 flutter run
构建您的颤振项目时在 build.gradle (app)
中获取它们最终负责设置 versionName
和versionCode
用于 apk。
对于 iOS:
A.B.C
代表CFBundleShortVersionString
如1.0.0
。
X
(+
后面的数字)代表CFBundleVersion
如1
、2
、3
等。
不要忘记在这一步之后执行flutter build ipa
或flutter 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 之前所说:versionName 是 before + 和 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
文件中的versionName
和versionCode
,稍后在您重建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 apk
或 flutter 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.ymlversion: 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】:所有这些答案都反映了官方文档,这就是我设置versionName
和versionCode
的方式。但是当我上传我的构建时,我得到了与帖子作者报告的相同的错误。
我以前在 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 商店更新应用
Flutter App 从 Play 商店下载后显示空白屏幕,尽管我使用了 SHA-1
将 Flutter 应用上传到 Google Play - 请升级到账单库版本 3 或更高版本以发布此应用。详细了解计费库 3