【问题标题】:Flutter: upgrade the version code for play storeFlutter:升级Play商店的版本代码
【发布时间】: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。

【问题讨论】:

    标签: android flutter version release google-play-console


    【解决方案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 文档中的应用版本化。

        【讨论】:

        【解决方案7】:

        适用于 Android

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

        1. 在pubspec.yaml 中更改您的版本号。
        2. 通过运行flutter pub get 命令更新您的local.properties。
        3. 现在通过运行 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.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】:

                            所有这些答案都反映了官方文档,这就是我设置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 中多次重复该答案
                            猜你喜欢
                            • 2021-04-11
                            • 1970-01-01
                            • 2021-09-17
                            • 1970-01-01
                            • 1970-01-01
                            • 2020-08-15
                            • 1970-01-01
                            • 2019-12-26
                            相关资源
                            最近更新 更多