我目前有一个项目有3个不同版本的同一个应用程序(不同的品牌等),这工作得很好.从那时起我就添加了3个新Apple Watch目标(每个应用程序"版本"1个),其中2个引用"主"Apple Watch目标中的文件.
一切正常,只要我记得更改每个故事板视图的模块引用,以便它映射到相应的watchkit扩展目标中的正确接口控制器.
但是,记住每次我需要运行/构建应用程序版本/目标时切换它是一个痛苦,而不是一个真正的长期解决方案.
我创建了以下命令,我想在正确的时间运行它,以便在编译之前更改storyboard引用.
perl -pi.bak -e 's/customModule=\"(.*?)\">/customModule=\"watchMyTarget_Extension\">/g' ${SRCROOT}/watch/Base.lproj/Interface.storyboard
Run Code Online (Sandbox Code Playgroud)
我还得出结论,我可能希望在应用程序编译后重置更改,因为我不想让git抱怨文件更改.这就是上述脚本创建.bak文件的原因.所以在完成编译并在设备上打包/运行之后,我想运行
mv ${SRCROOT}/watch/Base.lproj/Interface.storyboard.bak ${SRCROOT}/watch/Base.lproj/Interface.storyboard
Run Code Online (Sandbox Code Playgroud)
我已经尝试将脚本放在目标(watchTarget,而不是appTarget)构建方案中,Build->Pre/Post Actions这似乎没有任何效果.我尝试将它放在Run->Pre/Post Actions一定程度上工作,但似乎在将应用程序推送到模拟器之前启动了帖子操作,从而导致应用程序崩溃("无法运行查看设备日志"或类似的东西).
那么我到底需要将这些脚本放在构建过程中的正确时间运行?