如何在 Flutter App 上自动增加内部版本号?

bat*_*567 14 android android-studio flutter

目前,每次我构建 APK 时,我都需要在两个地方手动更新我的构建版本 - 这看起来非常不自动化且违反直觉(我将其与 Jenkins BUILD_ID 进行比较)。

我知道我必须(并且更喜欢这样)手动更新(semver)版本 - 0.2.0。

但肯定有某种进程/设置/插件可以在每次构建时自动更新+3?我读过很多帖子和解决方案,但没有一个真正做到了我期望的效果(除非必须,否则我真的不想要预构建钩子和 perl 正则表达式脚本)。

注意:我还没有推送到 PlayStore - 只是将 APK 分发给核心团队。

pubspec.yaml

version: 0.2.0+3
Run Code Online (Sandbox Code Playgroud)

本地属性

flutter.versionName=0.2.0
flutter.versionCode=3
Run Code Online (Sandbox Code Playgroud)

我在用 :

  • 安卓工作室4.0.2
  • 颤振1.22

Mat*_*t H 5

pubspec.yaml我所做的是使用 shell 脚本根据git commit计数和偏移量设置内部版本号。当我需要在不更改提交的情况下增加构建时,例如将相同版本发布到 Beta 和 Prod 时,将使用偏移量。

在我的 Mac 上使用 VSCode,我还设置了启动和任务来在每次构建之前执行脚本,但它也可以手动运行或转换为 Windows BAT 文件(安装了适当的 Linux 工具)awk sed grep wc xargs

请注意,您需要停止并重新运行(重建)iOS 和 Android 项目,然后它们才能识别更新的构建器编号。

我在 Flutter 项目上方的文件夹中运行它:

#!/bin/bash

path_to_pubspec="flutter_project/pubspec.yaml"
current_version=$(awk '/^version:/ {print $2}' $path_to_pubspec)
current_version_without_build=$(echo "$current_version" | sed 's/\+.*//')
revisionoffset=0
gitcount=`git log | grep "^commit" | wc -l | xargs`
new_version="$current_version_without_build+$gitcount"
echo "Setting pubspec.yaml version $current_version to $new_version"
sed -i "" "s/version: $current_version/version: $new_version/g" $path_to_pubspec
Run Code Online (Sandbox Code Playgroud)


Ted*_*Ted 1

我一直想知道同样的事情,因为它在上传到应用程序商店时会引起问题。

看起来解决方案是使用 fastlane 之类的东西来自动化这个过程,这是 Flutter 文档似乎喜欢的。

快车道: https: //fastlane.tools/

有关持续交付的 Flutter 文档:https://flutter.dev/docs/deployment/cd

快速通道increment_build_number操作:https://docs.fastlane.tools/actions/increment_build_number/

  • increment_build_number仅适用于iOS (4认同)
  • 这里有更有用的讨论:/sf/ask/3805022791/ (2认同)