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

Flutter build apk——build-name=1.0.2——build-number=3

或者改变局部。像这样的属性

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

但每次我在游戏商店出错

您必须为您的APK或Android应用程序包使用不同的版本代码,因为代码1已经分配给另一个APK或Android应用程序包。


我算出来了。 文档并不是直接的

在你的pubspec里。Yaml这样修改版本

version: 1.0.2+2

这里的东西是VER_NAME+VER_CODE


解决方案:

pubspec内部。Yaml添加这个(可能在描述之后,与描述,名称等相同的缩进…):

版本:2.0.0 + 2

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

解释:

前面加的是版本名,后面加的是版本代码。所以这里的版本代码是2,名称是2.0.0。无论何时你给一个更新颤振应用程序,一定要改变版本代码强制!

额外信息:添加

每当android应用程序被构建,构建。Gradle在android/app/中查找版本代码和名称。这通常是局部的。每次更改flutter pubspec.yaml时都会更改的属性


在pubspec.yaml中第一次更改颤振版本 示例' version 1.0.3+4

在android的情况下,去本地。属性比更改版本名称和代码相同,如颤振版本代码和名称。

在Ios的情况下,到生成。xcconfig than chnage FLUTTER_BUILD_NAME=1.0.3 FLUTTER_BUILD_NUMBER = 4”


更新版本:pubspec.yaml中的A.B.C+X。

为Android:

a.b.c.表示versionName,例如1.0.0。

X(+后面的数字)表示versionCode,如1、2、3等。

在此步骤之后,不要忘记执行flutter build apk或flutter run,因为:当您在pubspec文件中更新此版本后运行flutter build apk或flutter run时,本地的versionName和versionCode将被删除。属性稍后在构建中被更新。当您使用flutter build apk或flutter run构建您的flutter项目时,gradle (app)最终负责为apk设置versionName和versionCode。

iOS:

a.b.c.表示CFBundleShortVersionString,例如1.0.0。

X(+后面的数字)表示CFBundleVersion,例如1、2、3等。

不要忘记在此步骤后执行颤振构建ipa或颤振运行


Docs说build args应该覆盖pubspec.yml:

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

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


更新应用程序的版本号 应用程序默认版本号为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文档中的应用程序版本。


检查

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

在android上> >应用程序构建。Gradle从你的项目根文件夹


我有同样的问题,我解决它重新启动Android Studio。


为安卓

“X.Y.Z+n”这里“X.Y.Z”代表版本名称,“n”代表版本号。 将作出以下更改-

在pubspec。Yaml更改您的版本号。 更新本地文件。通过运行flutter pub get命令获取。 现在通过运行flutter build apk或flutter build appbundle命令构建apk或应用程序包。


在pubspec。Yml版本:1.0.0+1 版本变更:1.0.0+2 Flutter build ios——release-name——release-number将更新ios中的版本 Flutter pub get && Flutter run将更新android版本(android/local.properties)


你仍然可以在android/app/build.gradle中重写:

def flutterVersionCode def flutter版本名称

你自己的价值观。


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

原因尚不清楚。


这对我很管用! 我认出第一个应用程序为默认版本名1.0.0版本号1 这意味着1.0.0+1

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


如果您已经更改了versionCode,这可能是因为Play Console已经接受了您的构建。

而不是点击上传,点击Choose from library并选择已经发送的版本。


您可以更新本地。属性文件,


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

颤振构建——构建-number=X——构建-name=Y

X被用作版本代码 使用Y作为版本名

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


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

我之前的版本代码在play store显示为4(0.0.2)…我习惯了iOS的运作方式,所以这在我看来很奇怪。括号中的数字应该是版本/代码号,主号是实际的版本号。在必要的时候增加构建号,而不必碰撞版本(因为没有重大的变化)。

因此,当我试图上传0.0.3+1和新的构建号以增加这个新版本时,它抱怨说1已经被使用了。

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


Play Store只单独地查看versionCode,这可能对登陆这里的其他人有帮助。所以,如果你已经更新了你的versionNumber,例如,1.0.0+1到1.1.0+1 Play Store将抛出一个错误,versionCode没有改变。因此,不管你的versionNumber是什么,你也必须改变你的versionCode——比如,从1.0.0+1变成1.1.0+2


我一直在'app/build '中这样做。它的文件

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}else {
    flutterVersionCode = '4'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}else {
    flutterVersionName = '1.3'
}

在上传应用程序包之前,首先写发布名称。 我也遇到过同样的问题,这对我很有效。


仍然有人在寻找一个好的答案

在pubsec。yaml文件

将版本从1.0.0+1更改为1.0.0+2

然后在android中选择打开你的代码

文件->打开->您的Flutter Code工作区->项目的Android图标

现在去build。grade

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0.0'
}

to

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '2'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0.2'
}

现在是最后一个当地人。属性文件

sdk.dir=C:/Users/Admin/AppData/Local/Android/Sdk
flutter.sdk=D:\\flutter_windows\\flutter
flutter.buildMode=debug
flutter.versionName=1.0.0
flutter.versionCode=1

to

sdk.dir=C:/Users/Admin/AppData/Local/Android/Sdk
flutter.sdk=D:\\flutter_windows\\flutter
flutter.buildMode=debug
flutter.versionName=1.0.2
flutter.versionCode=2

对于上述flutter 2.10.2版本,请遵循以下步骤

步骤1:修改pubspec.yaml中的以下更改

    //change version 1.0.0+1 to 1.0.0+2
version: 1.0.0+2
    
    environment:
      sdk: ">=2.16.1 <3.0.0"

步骤2:在android\local.properties中进行以下更改

flutter.sdk=C:\\flutter
flutter.buildMode=release

// Change here flutter.versionName=1.0.0 to flutter.versionName 1.0.1
flutter.versionName=1.0.1

 //Change here flutter.versionCode=1 to flutter.versionCode=2
flutter.versionCode=2

flutter.minSdkVersion=21
flutter.targetSdkVersion=31
flutter.compileSdkVersion=31

例如,如果你要制作android 3版本,

对于Android,请访问 pubspec。Yaml和编辑在这里

version: 3.0.0

然后去建造。Gradle和编辑在这里

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '3'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '3.0' 

在我的情况下,我解决了相同的问题通过更改两个文件:

1-在pubspec.yaml:

来自:

version: 1.0.0+1

to:

version: 1.0.0+2

2-在android/locale.properties中

来自:

flutter.versionName=1.0.0
flutter.versionCode=1

to:

flutter.versionName=1.0.0
flutter.versionCode=2

3-Last行动:

flutter clean
flutter packages get

在project/android/app/build中更新。Gradle对我很有用。

defaultConfig {
    versionCode 2 // this needs to be updated
    versionName "1.0.5"
}

希望这能有所帮助!