Flutter打包打包安卓和ios包,打包时版本号更新

149 阅读1分钟

今天在android studio打包安卓进行上架,打包后在上传到小米应用商城中,反馈该次的apk版本跟上一次的一样,导致上传失败,以下是需要修改的那些文件: Android 第一步: 找到配置文件pubspec.yaml文件,修改version这个字段(这个很重要),修改为 1.0.2 + 2; 1.0.2 是版本名称,后面那个2是版本号(是数值类型),2 要前后一致。 第二步: 找到android/local.properties文件,flutter.versionName,flutter.versionCode这2个字段是根据pubspec.yam中的version更新的 第三步: 找到android/app/build.gradle文件,
这样就ok啦。

plugins {
    id "com.android.application"
    id "kotlin-android"
    id "dev.flutter.flutter-gradle-plugin"
    id "com.google.firebase.crashlytics"
    id 'com.google.gms.google-services'
}

dependencies {
    implementation platform('com.google.firebase:firebase-bom:33.9.0')
    implementation 'com.google.firebase:firebase-analytics'
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

// 正确读取 flutterRoot
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK path not found in local.properties. Please ensure flutter.sdk is set.")
} 

// 其他读取版本号(如果需要动态) 这里是需要修改的
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')?.toInteger() ?: 1
 // 获取版本号 flutter.versionCode 这个要与local.properties的flutter.versionCode一致
def flutterVersionName = localProperties.getProperty('flutter.versionName') ?: "1.0.0"  //获取版本名称
 // 获取版本号 flutter.versionName 这个要与local.properties的flutter.versionName一致

// 打印调试信息 
println("flutterVersionCode: $flutterVersionCode")
println("flutterVersionName: $flutterVersionName")
android {
    namespace "apk的包名"
    compileSdkVersion 35

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_23
        targetCompatibility JavaVersion.VERSION_23
    }

    kotlinOptions {
        jvmTarget = '23' // 确保与 Java 版本一致
    }

    defaultConfig {
        applicationId "apk的包名"
        minSdkVersion 24
        targetSdkVersion 35
        versionCode flutterVersionCode  // 这里是需要修改的
        versionName flutterVersionName  // 这里是需要修改的
        ndk {
            abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a'
        }
        manifestPlaceholders = [
                JPUSH_PKGNAME: applicationId,
                JPUSH_APPKEY : "applicationId的id",
                JPUSH_CHANNEL: "developer-default",
        ]
    }

    signingConfigs {
        debug {
            keyAlias "my-key-..."
            keyPassword '密码'
            storeFile file('.....s')
            storePassword '密码'
        }
        release {
            keyAlias "...."
            keyPassword '密码'
            storeFile file('.....s')
            storePassword '密码'
        }
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            signingConfig signingConfigs.release
            minifyEnabled true  // 开启混淆
            shrinkResources true  // 删除未使用的资源
        }
    }
}

flutter {
    source '../..'
}

ios ios/Runner/Info.plist文件

<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>