打包脚本基于 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 为打包脚本
网友评论