Flutter appbundle使用旧版本构建

8xiog9wr  于 2023-05-19  发布在  Flutter
关注(0)|答案(3)|浏览(142)

我想把我的Flutter应用的第二个版本上传到Google Play的内部测试频道(我现在只是在使用Android版本)。
我可以上传第一个版本1.0.0+1,但当试图上传第二个版本1.0.1+2 Google Play控制台是拒绝我的应用程序包与错误消息
You need to use a different version code for your APK because you already have one with version code 1
我已经试过这个顺序了:
flutter clean删除build和temp文件夹。
pubspec.yaml上的version线路从1.0.0+1修改为1.0.1+2
flutter pub get重建flutter所需的文件。
flutter build appbundle来构建bundle。
由于我已经能够构建和发布应用程序的第一个版本,因此我假设构建配置的其余部分是可以的。
大多数解决方案的目的是清理项目,修改pubspec.yaml,然后重建,但这似乎不适合我。

编辑:

我尝试使用值flutterVersionName = '1.0.1'flutterVersionCode = '2'修改build.gradle文件,我仍然得到一个版本号为1的appbundle。

62lalag4

62lalag41#

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数据。

j0pj023g

j0pj023g2#

找到了一个足够好的解决方案,那就是不使用Flutter sdk构建appbundle,而是使用Android Studio。
为了实现这一点,请执行以下操作:

打开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,就像您正在构建本机应用一样(有关生成签名应用捆绑包的详细说明,请参阅此处

  • 请注意,这并不能完全解决问题,因为仍然无法使用Flutter sdk正确生成bundle。*
vc6uscn9

vc6uscn93#

接受的答案防止版本被flutter管理。
更改版本后,您应该运行flutter pub upgrade命令。

相关问题