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

Vincent · 2015年09月16日 · 最后由 hellozzz 回复于 2015年10月09日 · 1982 次阅读
本帖已被设为精华帖!

前记

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

工作原理

最近移动团队在苹果婊平台开发了产品,但由于苹果婊 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 其实本来我也想详细写一下,实在懒得码字。。我抽空补写一下

谢谢分享

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册