出现场景
使用flutter build appbundle
打包aab时
因为上个版本是第一个默认版本1.0.0。所以这次打包我们在版本名后面加了1。
name: flutter_demo description: A new Flutter application for Flutter demo # The following line prevents the package from being accidentally published to # pub.dev using `pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. # In Android, build-name is used as versionName while build-number used as versionCode. # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html version: 1.0.0+1
上传到Google Play
,提示以下错误信息。
Version code 1 has already been used. Try another version code.
原因分析
首先我们得搞清楚Flutter中的版本是如何管理的。
Flutter打包的版本名和版本号默认是从pubspec.yaml中的version读取的。我们只需要更新它的值就可以了。
格式为
version:A.B.C+X
对于Android的版本来说,版本号的管理在app/build.gradle中配置。
android{ defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.exmaple.demo" minSdkVersion 21 targetSdkVersion 31 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } }
A.B.C代表了verisonName,比如默认初始值为1.0.0.
X代表versionCode,默认值从1开始,依次累加。
默认App的versionName为1.0.0,versionCode为1。
解决方案
因为对于默认的versionName来说,后面不加上versionCode,versionCode就会默认为1.所以1.0.0
和1.0.0+1
是没有任何区别的。
我们只需要在versionCode后面加上更大的数字即可。比如+2.
name: flutter_demo description: A new Flutter application for Flutter demo # The following line prevents the package from being accidentally published to # pub.dev using `pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. # In Android, build-name is used as versionName while build-number used as versionCode. # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # 1更改为2 version: 1.0.0+2
重新打包后上传,就能成功上传到Google Play了。