155
votes

I have published an application on the play store with flutter, now I want to upload a new version of the application. I am trying to change the version code with:

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

or changing the local.properties like this

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

but every time I get an error on the play store

You must use a different version code for your APK or your Android App Bundle because code 1 is already assigned to another APK or Android App Bundle.

18

18 Answers

356
votes

version in pubspec.yaml file

Update version:A.B.C+X in pubspec.yaml.

For Android:

A.B.C represents the versionName such as 1.0.0.

X (the number after the +) represents the versionCode such as 1, 2, 3, etc.

Do not forget to execute flutter build apk or flutter run after this step, because: When you run flutter build apk or flutter run after updating this version in the pubspec file, the versionName and versionCode in local.properties are updated which are later picked up in the build.gradle (app) when you build your flutter project using flutter build apk or flutter run which is ultimately responsible for setting the versionName and versionCode for the apk.

For iOS:

A.B.C represents the CFBundleShortVersionString such as 1.0.0.

X (the number after the +) represents the CFBundleVersion such as 1, 2, 3, etc.

Do not forget to execute flutter build ipa or flutter run after this step

180
votes

Figured this one out. Documentation is not straight forward

in your pubspec.yaml change the version like this

version: 1.0.2+2

where the stuff is VER_NAME+VER_CODE

24
votes

Solution:

Inside pubspec.yaml add this (probably after description, same indentation as of description, name etc...):

version: 2.0.0+2

Then do packages get inside flutter local directory (Do not forget to do this)

Explanation:

Everything before plus is version name and after is version code. So here the version code is 2 and name is 2.0.0. Whenever you give an update to the flutter app make sure to change the version code compulsorily!

Addtional Info:

Whenever android app is built, build.gradle inside android/app/ looks for version code and name. This usually lies in local.properties which is changed every time you change flutter pubspec.yaml

18
votes

The default version number of the app is 1.0.0. To update it, navigate to the pubspec.yaml file and update the following line:

version: 1.0.0+1

Just change that version to (As per your need )

version: 1.0.1+2

The version number is three numbers separated by dots, such as 1.0.0 in the example above, followed by an optional build number such as 1 in the example above, separated by a +.

Both the version and the build number may be overridden in Flutter’s build by specifying --build-name and --build-number, respectively.

In Android, build-name is used as versionName while build-number used as versionCode. For more information, see Version your app

After updating the version number in the pubspec file, run flutter pub get from the top of the project, or use the Pub get button in your IDE. This updates the versionName and versionCode in the local.properties file, which are later updated in the build.gradle file when you rebuild the Flutter app.

7
votes

Updating the app’s version number The default version number of the app is 1.0.0. To update it, navigate to the pubspec.yaml file and update the following line:

version: 1.0.0+1

The version number is three numbers separated by dots, such as 1.0.0 in the example above, followed by an optional build number such as 1 in the example above, separated by a +.

Both the version and the build number may be overridden in Flutter’s build by specifying --build-name and --build-number, respectively.

In Android, build-name is used as versionName while build-number used as versionCode. For more information, see Version your app in the Android documentation.

4
votes

For Android

"X.Y.Z+n" here "x.y.z" represents the VERSION NAME and "n" represents the VERSION NUMBER. The following changes to be made-

  1. In pubspec.yaml change your version number.
  2. Update your local.properties by running flutter pub get command.
  3. Now build your apk or app bundle by running flutter build apk or flutter build appbundle command.
3
votes

In case you already changed the versionCode, it may be because Play Console already accepted your build.

Instead of clicking on upload, click in Choose from library and choose the build that was already sent.

enter image description here

2
votes

Docs says the build args should override pubspec.yml:

Both the version and the build number may be overridden in Flutter’s build by specifying --build-name and --build-number, respectively.

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

2
votes

Check

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

on android>app>Build.gradle from your project's root folder

2
votes

You can still do completely your own thing by overwriting in android/app/build.gradle:

  • def flutterVersionCode
  • def flutterVersionName

to your own values.

2
votes

I don't think anyone has actually answered the question. A lot of suggestions are updating the version in pubspec. But depending on your deployment you might not use those values.

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

X gets used as your version code Y gets used as your version name

To test just run build and check local.properties

1
votes

First one change flutter version in pubspec.yaml example `version 1.0.3+4

In case of android go to local.properties than change version name and code same like flutter version code and name.

In case of Ios go to generated.xcconfig than chnage FLUTTER_BUILD_NAME=1.0.3 FLUTTER_BUILD_NUMBER=4`

1
votes

I had the same problem, I solve it by restarting Android Studio.

0
votes
  • in pubspec.yml version: 1.0.0+1
  • change to version: 1.0.0+2
  • flutter build ios --release-name --release-number will update version in ios
  • flutter pub get && flutter run will update version for android (android/local.properties)
0
votes

Any of the solution did not work for me with App Bundle, I changed to APK and no issues with the version.

Not clear why though.

0
votes

this works for me! I recognised that first app as Default Version Name 1.0.0 Version Number 1 so this means 1.0.0+1

I updated my app after I wrote as 1.0.0+2 in pubspec.yaml.

0
votes

you can update the local.properties file,

enter image description here

0
votes

All of these answers mirror the official documentation, and it is how I am setting my versionName and versionCode. But when I upload my build I get the same error as reported by the post author.

My previous version code on the play store shows as 4 (0.0.2) ... I am used to how iOS works so this looked odd to me. The number in the brackets should be the build/code number and the main number is the actual version number. Incrementing the build number when necessary without having to bump the version (because there are no significant changes).

So when I attempted to upload 0.0.3+1 with a new build number to increment for this new version, it complained that the 1 had already been used.

So how does this work on the Play store? I'm confused too.