iOS xcode jenkins 测试打包显示自增版本号及时间戳

简介:

测试部门要求打包能显示自增版本号或时间戳,以区别打包版本在测试手中的不同,好定位指定打包版本的问题。


在Xcode工程里选择对应的Target,在Build Phases里点击“New Run Script Phases”: 在下面的窗口中写入类似于如下脚本:


说明:workspace_dir 是workspace项目,project_dir是project项目。

1
2
3
4
5
6
7
buildNumber=$( /usr/libexec/PlistBuddy  -c  "Print :CFBundleVersion"  "${WORKSPACE_DIR}/${INFOPLIST_FILE}" )  
shortVersion=$( /usr/libexec/PlistBuddy  -c  "Print :CFBundleShortVersionString"  "${WORKSPACE_DIR}/${INFOPLIST_FILE}" )  
   
buildNumber=` date  + "%m%d" `  
buildNumber= "$shortVersion.$buildNumber"  
   
/usr/libexec/PlistBuddy  -c  "Set :CFBundleVersion $buildNumber"  "${WORKSPACE_DIR}/${INFOPLIST_FILE}"

版本号加时间戳自增值。

这种做法对原应用介入太深,修改了系统plist的CFBundleVersion值。为了不影响原应用代码,在info.plist文件新增自定义新值CFBundelInfoDictionaryVersion,对其操作。

1
2
3
buildNumber=` date  + "%Y%m%d%H%M" `
 
/usr/libexec/PlistBuddy  -c  "Set :CFBundleInfoDictionaryVersion $buildNumber"  "${WORKSPACE_DIR}/${INFOPLIST_FILE}"

在版本显示部分代码

1
2
3
4
         cell1.mainString = @ "内部版本" ;
         NSString * version1 = [NSString stringWithFormat:@ "%@" ,[[[NSBundle mainBundle] infoDictionary] objectForKey:@ "CFBundleInfoDictionaryVersion" ]];
         cell1.detailString = version1;
         return  cell1;

说明:date +"%Y%m%d%H%M%S"  年月日时分秒  格式。

plist文件路径写法,涉及xcode全局变量定义。

$(SRCROOT)/YouPinHui/SupportFile/Info.plist

${WORKSPACE_DIR}/${INFOPLIST_FILE}

如果仅仅只想在Release(如Archive等)的时候更新Build,可以加入判断:

  1. if [ "${CONFIGURATION}" = "Release" ]; then  

  2.   

  3. fi

















本文转自ljianbing51CTO博客,原文链接: http://blog.51cto.com/ljianbing/1745208,如需转载请自行联系原作者






相关文章
|
jenkins Unix 持续交付
个人记录jenkins编译ios过程 xcode是9.4.1
个人记录jenkins编译ios过程 xcode是9.4.1
466 2
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
1295 0
|
iOS开发 MacOS Perl
解决Xcode运行IOS报错:redefinition of module ‘Firebase‘和could not build module ‘CoreFoundation‘
解决Xcode运行IOS报错:redefinition of module ‘Firebase‘和could not build module ‘CoreFoundation‘
1093 4
|
iOS开发 开发者
解决xcode doesn‘t support iphone’s ios 14.6 (18f72)
解决xcode doesn‘t support iphone’s ios 14.6 (18f72)
1099 3
|
12月前
|
运维 jenkins 测试技术
"还在苦等开发部署环境?3步教你用Jenkins拿回测试主动权"
测试工程师最头疼的问题是什么?依赖开发部署环境! 开发延期→测试时间被压缩→紧急上线后BUG频出→测试背锅。传统流程中,测试被动等待部署,效率低下。而Jenkins自动化部署让测试人员自主搭建环境,实现: ✅ 随时触发测试,不再苦等开发 ✅ 部署效率提升10倍,抢回测试时间 ✅ 改善团队协作,减少互相甩锅 学习Jenkins部署能力,成为高效测试工程师,告别被动等待!
|
Unix 调度 Swift
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
1262 3
|
iOS开发
mac不通过Xcode直接打开IOS模拟器
mac不通过Xcode直接打开IOS模拟器
1297 24
|
iOS开发
技术好文:xcode动态图,ios实现动态图,iosgif,暂停和继续播放
技术好文:xcode动态图,ios实现动态图,iosgif,暂停和继续播放
372 24
|
缓存 iOS开发
如何在Xcode删除某个版本的IOS模拟器
如何在Xcode删除某个版本的IOS模拟器
2201 1
|
存储 定位技术 iOS开发
XCode8升级到Xcode9(操作系统为iOS11)后原来的工程中遇到的问题
XCode8升级到Xcode9(操作系统为iOS11)后原来的工程中遇到的问题
437 23

推荐镜像

更多