'Flutter: upgrade the version code for play store
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.
Solution 1:[1]
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
Solution 2:[2]
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
Solution 3:[3]
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
Solution 4:[4]
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.
Solution 5:[5]
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.
Solution 6:[6]
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-
- In
pubspec.yaml
change your version number. - Update your
local.properties
by runningflutter pub get
command. - Now build your apk or app bundle by running
flutter build apk
orflutter build appbundle
command.
Solution 7:[7]
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
Solution 8:[8]
Follow these steps for above flutter 2.10.2 version
Step 1: Change following changes in 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"
Step 2: Change following change in 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
Solution 9:[9]
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
Solution 10:[10]
Check
android{
//....
defaultConfig {
//....
version code:2
}
}
on android>app>Build.gradle from your project's root folder
Solution 11:[11]
You can still do completely your own thing by overwriting in android/app/build.gradle:
- def flutterVersionCode
- def flutterVersionName
to your own values.
Solution 12:[12]
still someone looking for a Good answer
in pubsec.yaml file
change version: 1.0.0+1 to version: 1.0.0+2
then open your code in android by selecting
File -> Open -> your Flutter Code workspace -> Android icon of project
Now go to build.gradel
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'
}
Now last one local.property file
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
Solution 13:[13]
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`
Solution 14:[14]
I had the same problem, I solve it by restarting Android Studio.
Solution 15:[15]
- 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 iosflutter pub get && flutter run
will update version for android (android/local.properties)
Solution 16:[16]
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.
Solution 17:[17]
Something that might be helpful to others that land here, the Play Store only looks at the versionCode
in isolation. So, if you've updated your versionNumber
from, for example, 1.0.0+1 to 1.1.0+1 Play Store will throw an error that the versionCode
has not changed. So, regardless of what your versionNumber
is, you must also change your versionCode
- as in, changing from 1.0.0+1 to 1.1.0+2
Solution 18:[18]
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.
Solution 19:[19]
Solution 20:[20]
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.
Solution 21:[21]
I have been doing it like this in the 'app/build.gradle' file
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'
}
Solution 22:[22]
before uploading the app bundle, first write the Release name. I faced the same issue and That's worked for me.
Solution 23:[23]
For example if you to make android version 3 ,
For Android go to pubspec.yaml and edit here
version: 3.0.0
and go to build.gradle and edit here
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '3'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '3.0'
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow