ios xcodebuild 多target 并行打包

打包脚本基于 shell 编写
核心思想:
shell 为单线程,所以一个窗口只能操作一个打包进程,重点是如何开启多个窗口
这里配合使用AppleScript 和shell 实现多个打包进程同时运行

AppleScirpt可以去 AppleScript Language Guide 官方文档了解

最初的想法是,使用concurrently 使多个shell 脚本同时执行,但是由于shell 为单线程,故而最终结果仍然是依次执行打包。
最后想到,既然每个终端可以单独开启一个shell进程进行打包,那问题的关键就在于如何开启多个终端窗口,也可以通过shell 来操作,但是开启之后,如何在新窗口执行打包命令,就是个问题了。

 open -a Terminal -n 

此时就需要借助AppleScript了

   tell application "Terminal"
                set newTab to do script "cd $project_path &&. ./testFlightUPload.sh scheme_name $project_path/AppStoreExportOptions/AppStoreExportOptions1.plist"
       end tell

这样配合使用shell和AppleScript就实现依次打开多个终端窗口,并分别执行打包任务。

完整脚本如下:

#!/bin/bash

project_path=$(pwd)
exec osascript <<EOF
       tell application "Terminal"
                set newTab to do script "cd $project_path &&. ./upload.sh scheme_name_1 $project_path/AppStoreExportOptions/AppStoreExportOptions1.plist"
                set newTab to do script "cd $project_path &&. ./upload.sh scheme_name_2 $project_path/AppStoreExportOptions/AppStoreExportOptions2.plist"
                set newTab to do script "cd $project_path &&. ./upload.sh scheme_name_3 $project_path/AppStoreExportOptions/AppStoreExportOptions3.plist"
       end tell
EOF

其中upload.sh 为打包脚本

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容