Post

applescript模拟人操作xcode打包

参考:

前言

听人说他们iOS开发者账号莫名其妙被封了好几个,封了后又要重新花钱购买,操作麻烦还费钱 偶然发现虽然账号被封了,但是证书和描述文件还可以使用Xcode手动操作打包,但是使用xcodebuild就会报错,于是研究了下使用AppleScript来模拟手动操作打包

具体代码如下:test.scpt, 先使用mac自带的脚步编辑器软件创建一个applescript脚步,然后将如下代码copy进入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
on run {codePath, scheme}
	openXcode(codePath)
	delay 5 -- 根据需要调整加载时间
	changeScheme(scheme)
end run


on openXcode(path)
	tell application "Xcode"
		activate
		open path
	end tell
end openXcode

on changeScheme(scheme)
	tell application "System Events"
		tell process "Xcode"
			-- 打开 Scheme 菜单
			click menu item "Scheme" of menu 1 of menu bar item "Product" of menu bar 1
			delay 3
			
			-- 模拟选择指定的 Scheme
			click menu item scheme of menu 1 of menu item "Scheme" of menu 1 of menu bar item "Product" of menu bar 1 -- 替换为 Scheme 名称
			delay 3
		end tell
	end tell
	
	-- 执行 Archive(归档)
	tell application "System Events"
		tell process "Xcode"
			-- 点击 Product > Archive 菜单项
			click menu item "Archive" of menu 1 of menu bar item "Product" of menu bar 1
		end tell
	end tell
end changeScheme

使用shell脚本调用applescript,demo: test.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh
# 不包含脚本自身
echo "输入的命令:$0 $@"
echo "参数个数:$#+1"
# 便利输入的参数
idx=0
echo "参数位置:$idx 参数内容: $0"
for i in $@; do
    idx=$(($idx+1))
    echo "参数位置:$idx 参数内容: $i"
done
codePath="/xxx/xxxx/xxx.xcworkspace"
scheme=$1
# 执行applescript
osascript /xxx/xxx/test.scpt "$codePath" "$scheme"

# sh /xxxx/xxx/xxx.sh "xxxx"

This post is licensed under CC BY 4.0 by the author.