使用旧版本构建 Flutter appbundle

Flutter appbundle building using older version

我想将我的 Flutter 应用程序的第二个版本上传到 Google Play 的内部测试频道(我目前正在使用 Android 版本)。

我可以上传第一个版本 1.0.0+1 但在尝试上传第二个版本时 1.0.1+2 Google Play Console 拒绝我的应用程序包并显示错误消息

You need to use a different version code for your APK because you already have one with version code 1.

我已经尝试过序列:

flutter clean 删除构建和临时文件夹。

正在将 pubspec.yaml 上的 version 行从 1.0.0+1 修改为 1.0.1+2

flutter pub get 重建 flutter 需要的文件。

flutter build appbundle 构建捆绑包。

因为我已经能够构建和发布应用程序的第一个版本,所以我假设构建配置的其余部分没问题。

大多数解决方案旨在清理项目、修改 pubspec.yaml 然后重建,但这似乎对我不起作用。

编辑:

尝试使用值 flutterVersionName = '1.0.1'flutterVersionCode = '2' 修改 build.gradle 文件,但我仍然得到版本代码为 1 的应用程序包。

Android应用程序版本代码和版本名称在android/app/build.gradle中定义。查看此文件并检查是否包含这些行

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

 def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}
...
 defaultConfig {
    applicationId "net.myapp"
    minSdkVersion 18
    targetSdkVersion 28
    versionCode flutterVersionCode.toInteger() //<-this line defines versionCode
    versionName flutterVersionName
...

如果一切正常,请查看android/local.properties 文件。当 Flutter 构建应用程序时,此文件会更新。它应该有这些行,从您的 pubspec.yaml 数据生成:

flutter.versionName=1.1.1
flutter.versionCode=9

如果两个文件都正常,运行一个flutter build apk重新生成local.properties数据。

找到了一个足够好的解决方法,即不使用 Flutter sdk 而是使用 Android Studio 构建 appbundle。

为了实现这一点,请执行以下操作:

打开 Android Studio > 打开 android 项目(Flutter 项目中的 android 文件夹)

然后修改你的应用级别build.gradle如下:

defaultConfig {
    // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
    applicationId "<YOUR_APP_ID>"
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 2     // Manually add your desired version code
    versionName "1.0.1"      // Manually add your desired version name
//        versionCode flutterVersionCode.toInteger()
//        versionName flutterVersionName
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

然后转至 Build > Generate Signed Bundle / APK... 以生成您的捆绑包或 APK,就像您正在构建本机应用程序一样(生成签名应用程序的进一步说明可以找到包 here

请注意,此并未完全解决问题,因为仍然无法使用 Flutter sdk 正确生成包。