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

2024-03-02

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

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

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

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

pubspec.yaml

version: 0.2.0+3

and

本地属性

flutter.versionName=0.2.0
flutter.versionCode=3

我在用 :

  • 安卓工作室4.0.2
  • 颤振1.22

我所做的是使用 shell 脚本来设置内部版本号pubspec.yaml基于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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Flutter App 上自动增加内部版本号? 的相关文章

  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • 在 ViewPager Fragments 中使用 Master/Detail 模板(下载链接)

    工作代码 https github com lukeallison ViewPagerMasterDetail https github com lukeallison ViewPagerMasterDetail Android 主 详细流
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • CardView 圆角获得意想不到的白色

    When using rounded corner in CardView shows a white border in rounded area which is mostly visible in dark environment F
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • Ubuntu 16.04 - Genymotion:找不到 /dev/hw_random

    I install Genymotion on the Ubuntu 16 04 64Bit I created a virtual emulator for Android 6 0 then I run this emulator but
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • AppLifeCycleState.detached 未被调用

    import package flutter material dart void main gt runApp MyApp class MyApp extends StatelessWidget override Widget build
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • Android:膨胀布局时出现 StackOverFlowError 和 InvokingTargetException

    首先 对不起我的英语 我在膨胀布局时有一个问题 我有一个自定义视图 从 LinearLayout 扩展而来 称为按钮帮助 我在名为的布局上使用该视图加载活动 我的以下代码在所有设备和模拟器上都能完美运行 但具有 QVGA 屏幕 例如 Sam
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 未安装 Visual Studio;这对于 Windows 开发是必要的

    My 颤振医生 https docs flutter dev get started install windows run flutter doctor是说 Visual Studio develop for Windows X Visu

随机推荐

  • 替代

    我正在尝试修复为我编写的旧脚本 我需要它运行而无需 我想从脚本内部运行该函数 而无需像该命令那样的内联代码 抱歉 我不是 JS 专家 但是我该怎么做呢 或者 如果您使用的是 jQuery function Your code here
  • BITS 多域传输文件

    如何在不同域的服务器之间传输文件 i e PS C Users Desktop gt Import Module bitstransfer PS C Users Desktop gt c get credential PS C Users
  • 在R中进行线性回归时,如何有条件地删除因子的NA观察?

    我正在尝试在 R 中建立一个简单的线性回归模型 模型中有三个因子变量 模型是 lm Exercise Econ Job Position 其中 锻炼 是数字因变量 即锻炼的时间量 经济 工作 职位 都是因子变量 经济 是指一个人是否有工作
  • 需要 T SQL 合并示例来帮助理解

    下列 MERGE dbo commissions history AS target USING SELECT amount requestID AS source amount request ON target request sour
  • 如何对齐SpriteBatch.DrawString绘制的文本?

    有没有一种简单的方法可以将文本向右和居中对齐 而不是默认的左对齐 我使用这段代码 Flags public enum Alignment Center 0 Left 1 Right 2 Top 4 Bottom 8 public void
  • C# double 未按预期工作[重复]

    这个问题在这里已经有答案了 我知道双精度数是小数 在下面的程序中 输出是 1 尽管我认为它会重复 1 05 static void Main string args double d 19 18 Console WriteLine d Co
  • 从结构数组中选择 Spark DataFrames 中的特定列

    我有一个 Spark 数据框df具有以下架构 root k integer nullable false v array nullable true element struct containsNull true a integer nu
  • 使用 VS Code 远程 Docker 容器网络挂起 5 秒

    我有 3 个服务 共享同一网络的 webapp app 数据库 db 和 redis rd 随机地 两个服务 数据库和 Redis 的连接都会挂起大约 5 秒 不仅当我运行连接到数据库的网络服务器时 甚至当我浏览网页上的链接时也是如此 有时
  • 如何在 git 中列出版本控制的文件?

    我想列出 git 存储库根目录中的版本控制文件 要在集市中执行相同的操作 您可以运行 bzr ls versioned non recursive 我如何在 git 中执行此操作 如果您准确描述要显示的列表 将会更有帮助 从 bzr 文档猜
  • SQL Server 查询处理器耗尽内部资源

    Query update mytable set mycol null where id in 583048 583049 50000 more Message 查询处理器耗尽了内部资源并且无法 生成查询计划 这是一个罕见的事件 仅预计 极
  • Kinesis lambda DynamoDB

    我正在学习 AWS 服务的一个用例 在浏览完文档后 我想出了一个简单的流程 我想使用 Streams API 和 KPL 将数据提取到 Kinesis 流中 我使用示例 putRecord 方法将数据提取到流中 我正在将此 JSON 摄取到
  • Windows Phone 8 cordova视口高度问题

    我们用 cordova 开发了一个 Windows Phone 8 应用程序 可以正常使用 但是在 windows Phone 8 之后8 0 10328 78释放页脚即可清理 我之前检查过代码 我得到的视口高度为 768 现在为 800
  • 自定义 Android 中的警报对话框

    我想在警报对话框的浅色背景上显示深色文本 但我不知道该怎么做 请帮我 Thanks 您可以在 XML 视图中创建自己的布局 就像创建活动一样
  • 具有相同标签的列的平均值

    我有两个向量 data vector A 1 2 2 1 2 6 2 3 2 3 3 5 label vector B 1 2 1 2 3 NaN 我想取具有相同标签的所有列的平均值 并将它们输出为按标签号排序的矩阵 忽略 NaN 所以 在
  • 从耶拿的文件中删除无效的 N-Quads

    我有一个包含 N Quads 的文件 使用 schema org 词汇表 我想使用 Apache Jena 的命令行工具将其加载到 TDB RDF 存储中 我正在使用的命令是 tdbloader loc
  • iOS 验证得到 Main_iPhone~iphone.storyboardc 未找到

    我正在尝试分发我的 iOS 应用程序 在 xCode 验证期间收到以下错误消息 未找到故事板文件 Main iPhone iphone storyboardc 请确保指定的文件包含在捆绑包中 并在文件名后附加任何所需的设备修饰符 需要一些建
  • 计算数据框中主题标签的频率

    我正在尝试计算数据框 文本 列中主题标签词的频率 index text 1 ello ello ello ello hello ello 2 red green blue black colours 3 Season greetings h
  • 如何使我的表单始终位于主表单之上?

    如何使我的非模态表单始终位于主表单之上 我努力了 procedure TForm3 CreateParams var Params TCreateParams begin inherited CreateParams Params Para
  • Prolog 中的选择排序

    我是 Prolog 的新手 我正在尝试进行选择排序 这是我所拥有的 ssort ssort M S L min M L remove M L N ssort S N min M M min M H T min N T min2 M H N
  • 如何在 Flutter App 上自动增加内部版本号?

    目前 每次我构建 APK 时 我都需要在 2 个位置手动更新我的构建版本 这看起来非常不自动化且违反直觉 我将其与 Jenkins BUILD ID 进行比较 我知道我必须 并且更喜欢这样 手动更新 semver 版本 0 2 0 但肯定有