【问题标题】:Flutter appbundle building using older version使用旧版本构建 Flutter appbundle
【发布时间】:2019-10-15 03:09:43
【问题描述】:

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

我可以上传第一个版本 1.0.0+1,但尝试上传第二个版本时 1.0.1+2 Google Play 控制台拒绝我的 appbundle 并显示错误消息

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 build appbundle 构建捆绑包。

由于我已经能够构建和发布应用程序的第一个版本,我假设其余的构建配置都可以。

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

编辑:

尝试使用值 flutterVersionName = '1.0.1'flutterVersionCode = '2' 修改 build.gradle 文件,但我仍然得到一个带有 versionCode 1 的 appbundle。

【问题讨论】:

    标签: flutter google-play-console


    【解决方案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 数据。

    【讨论】:

    • build.gradle 没问题,android/local.properties 生成正确,表明versionNameversionCode 都是我打算使用的。当我尝试使用上述错误消息将 .aab 上传到 Play 管理中心时,我的问题就出现了。
    【解决方案2】:

    找到了一个足够好的解决方法,即不使用 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... 生成您的 bundle 或 APK,就像您正在构建原生应用程序一样(可以找到生成签名应用程序包的更多说明@ 987654321@

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

    【讨论】:

      猜你喜欢
      • 2023-01-14
      • 2019-12-30
      • 2020-05-02
      • 2020-01-31
      • 2015-07-22
      • 2022-01-13
      • 2016-06-18
      • 2018-09-16
      • 2022-01-16
      相关资源
      最近更新 更多