持续集成 [更新] apple watch 集成构建方案 (已开源)

Vincent · September 16, 2015 · Last by hellozzz replied at October 09, 2015 · 1224 hits
本帖已被设为精华帖!

前记

上回在群里问了一下,国内开始做苹果婊的应用厂商应该还是比较少的,既然天坑摆我面前,我就先踩为敬了。

工作原理

最近移动团队在苹果婊平台开发了产品,但由于苹果婊app加入,需要签名的target从一个变成三个,而且三个target还各自需要不一样的签名,xcodebuild提供的-target已经不适用了。

普通iOS app构建,PROVISIONING_PROFILE和CODE_SIGN_IDENTITY都可以通过flag传参给编译器,替代从project.pbxproj中读取的-target或-scheme对应的Build configuration的值。但apple watch app工程的target从一个变成三个,通过flag只能处理一个target,另外两个target配置若有问题会导致构建失败。

此脚本的解决方案是,提前在project.pbxproj中准备好正确的Build configuration参数,即构建前通过脚本替换掉project.pbxproj中签名相关的键值,构建时即可直接使用project.pbxproj中正确的签名配置。

脚本分析

整个脚本分三部分。

初始化

主要负责初始化资源,包括初始化构建所需要的变量值,更新对应证书,清理环境等工作。例如标签为#init, #clean, #ENV 相关部分。

更新project.pbxproj

负责替换键值,标签#replace XCConfigurationList部分。
需要替换三个键值,分别为①PROVISIONING_PROFILE, ②CODE_SIGN_IDENTITY, ③CODE_SIGN_IDENTITY[sdk=iphoneos*],替换目标位对应的Build configuration配置的键值。

构建

使用默认配置构建就可以了。

如何使用

配置项都写死在脚本里,脚本通过接收一个参数决定使用什么配置项构建。

./AppleWatchBuildScript dev

不喜欢写死的也可以自己改成动态获取或者读外部数据,不过我认为没什么必要。

参考资料

watchkit-command-line-builds
kkbox-ios-jenkins
project.pbxproj,最熟悉的”陌生人”

脚本已开源。https://github.com/wanyukang/Shirahoshi

共收到 6 条回复 时间 点赞

脚本能拿出来分析下不?

#1楼 @lihuazhang 已开源,在最后一行有个链接。

Good Job!填的好!

#2楼 @cjtcwyk 我看了,但是一般我们会要求作者把脚本贴出来,然后把主流程分析下。

#4楼 @lihuazhang 其实本来我也想详细写一下,实在懒得码字。。我抽空补写一下

谢谢分享

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up