当前位置: 首页 > news >正文

使用agvtool更改app version/build

现在开发的项目,使用的target太多,每次一到发测、上传就很头疼。总得一个个target去修改新的版本号。直到发现,爸爸居然有一个agvtool的工具。

图片描述

先上个官方链接

1、首先,需要确保工程中的Info.plist存在两个Key——CFBundleVersionCFBundleShortVersionString。不过,貌似一般都是有的。

2、需要修改build setting的一些配置。Current Project VersionVersioning System。需要将Versioning System设置成Apple Generic。这样才能确保正常使用agvtool

图片描述

3、打开工程目录,即.xcodeproj的所在。这时候就可以来使用command line了。


agvtool使用的一些command line。其中marketing-version对应是工程中的version,而version则对应着工程中的build.

1)查看当前版本

// build
agvtool what-version
// version
agvtool what-marketing-version
// build
agvtool vers
// version
agvtool mvers

2)自动增加版本号

agvtool next-version -all
agvtool bump -all

二者都是给build递增。version的话,没有递增的命令。-all可加可不加,但是不附带-all的话,会出现设置成功,但是打开工程看build的话,确是没有任何变化,还是旧版本的build。此时再去agvtool bump -all或者agvtool next-version -all。所有build,都会变化,而且是在上一部设置成功的数值上+1。此步已跪。。。。找到原因后,再来更新。。。

3)设置新版本号

// build
agvtool new-version -all 1.0.0
// version
agvtool new-marketing-version 1.0.0

4) help

agvtool help

如果想了解更多,直接一句command line——agvtool help,可以查看相关的使用。


中途遇到的坑

在使用的过程,发现某个targetversionbuild都没有任何变化。错误提示一直显示——Cannot find "$(SRCROOT)/Info.plist。后来在build settingInfo.plist目录设置,发现多了$(SRCROOT),去掉后,agvtool new-marketing-version x.x.xagvtool new-version x.x.x -all。完美解决。

PS:后续有任何发现,再继续来更新吧。。

图片描述

顺便推广下自己的blog:https://addicechan.github.io/

相关文章:

  • 关于position的小总结
  • 《剑指offer》二叉树镜像
  • 走向全栈之MongoDB的使用
  • RN开发之如何升级自己的本地RN项目
  • Android 倒计时的五种实现方式
  • Linux运维工程师如何找一份好工作?
  • 编码小结2
  • Nginx | 负载均衡(一)
  • VS链接错误: LNIK1123
  • Angular 2 DI - IoC DI - 1
  • 百度地图API标注+时间轴组件
  • Hinton神经网络公开课2 The Perceptron learning procedure
  • vs2017常用扩展
  • Hibernate MySQL Timestamp查询时遇到的转换问题
  • IOS开发-KVC
  • 深入了解以太坊
  • Bootstrap JS插件Alert源码分析
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • eclipse(luna)创建web工程
  • Js基础知识(一) - 变量
  • js数组之filter
  • Laravel Telescope:优雅的应用调试工具
  • Redis字符串类型内部编码剖析
  • Swoft 源码剖析 - 代码自动更新机制
  • use Google search engine
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 高度不固定时垂直居中
  • 简析gRPC client 连接管理
  • 前端知识点整理(待续)
  • 使用docker-compose进行多节点部署
  • 微信小程序设置上一页数据
  • 我建了一个叫Hello World的项目
  • 小程序开发中的那些坑
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • #define,static,const,三种常量的区别
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (1)常见O(n^2)排序算法解析
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (规划)24届春招和25届暑假实习路线准备规划
  • (三分钟)速览传统边缘检测算子
  • (十一)c52学习之旅-动态数码管
  • (五)Python 垃圾回收机制
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)用.Net的File控件上传文件的解决方案
  • (转载)Linux网络编程入门
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 服务 ServiceController
  • .NET6实现破解Modbus poll点表配置文件
  • .net和jar包windows服务部署
  • .NET轻量级ORM组件Dapper葵花宝典