相信大家也一直被手动添加设备和更新 profile 文件折磨过,于是想是不是可以通过脚本来做这件事。
首先,找到了苹果提供的相关接口,App Store Connect API。但通过脚本调用接口还是比较繁琐,于是在搜索过程中,发现前人已经为我们造好了轮子:fastlane/spaceship。
其中,DeveloperPortal API 对应我们需要的功能。
使用方法在文档中已经比较详细了,没有讲到的方法、属性也可以寻找具体源文件找到。例如 profile 见 fastlane/provisioning_profile.rb。
这里将自己使用的脚本简单展示一下,以供参考:
require 'Spaceship'
# 登录并选择 team
Spaceship::Portal.login("...", "...")
Spaceship::Portal.select_team(team_id: "...")
# 打开设备文件,其中每行是“UDID 设备名称”
File.open("device.txt", "r") do |file|
file.each_line do |line|
a = line.split(/\s+/)
# 创建设备
Spaceship::Portal.device.create!(name: a[1], udid: a[0])
end
end
# 更新 development 和 ad_hoc 的描述文件,以使用新加的设备
Spaceship::Portal.provisioning_profile.development.all.each do |p|
p.devices = Spaceship::Portal.device.all
p.update!
end
Spaceship::Portal.provisioning_profile.ad_hoc.all.each do |p|
p.devices = Spaceship::Portal.device.all
p.update!
end
# 下载所有描述文件到指定文件夹
Spaceship::Portal.provisioning_profile.all.each do |p|
content = p.download
File.open("pp_files/#{p.name}.mobileprovision", "w+") do |f|
f.write(content)
end
end