我找不到任何相关内容(也许我只是使用了错误的搜索条件..):
我们正在尝试为我们的应用程序构建合理的持续集成设置。为了实现真正合理的实现,构建服务器应该能够从apple自动刷新使用的配置文件。与X-Code组织者的工作类似,但通过命令行自动完成
任何线索,如果可能的话?
答案 0 :(得分:54)
这是我的bash脚本,其中脚本的第一个参数($ 1)是新配置文件的位置。
rm -Rf ~/Library/MobileDevice/Provisioning\ Profiles/*
cp "$1"/*.* ~/Library/MobileDevice/Provisioning\ Profiles/
基本上,〜/ Library / MobileDevice / Provisioning Profiles /文件夹中的任何内容都可用于构建(并将显示在Xcode中)。
如果你想建立一个CI系统,我最近就Hudson使用它进行了讨论,并提出了一些幻灯片和注释over here。如果您对此有任何疑问,我的电子邮件将在我的网站上。
答案 1 :(得分:16)
更新:Cupertino将不再使用最新的iTunes。请考虑使用sigh代替
这个命令行界面听起来很有帮助:
https://github.com/nomad/cupertino
允许您下载所有分发配置文件(感谢@tdubik):
ios profiles:download:all --type distribution
另一种方法是使用企业开发许可证(300美元/年),允许您在没有配置的情况下为设备构建!因此,您可以构建应用程序,并将其发送到设备,而无需前往Apple Dev中心或注册任何新设备。
请注意,这不允许您将应用程序分发到appstore,但如果您是一个为客户构建大量应用程序的开发人员,它可以简化您的“构建并发送给客户”流程相当一块!我不确定这是否属于Apple的合法使用政策,所以请在考虑该选项之前检查一下。但它可能需要考虑原型等,当他们真正想要发货时,你可以让他们获得自己的开发者计划许可。
答案 2 :(得分:1)
尝试使用https://github.com/lacostej/apple-dev
中的apple_dev_center.rb它解析苹果开发者网站上的信息并下载配置文件,以便将它们自动复制到正确的位置。
答案 3 :(得分:1)
Sigh
可以为您管理配置文件。但是,它不支持安装您自己已经获取的配置文件。但是,我仍然认为查看他们的source for how they actually install a profile once they've downloaded it很有价值。
值得庆幸的是,它与James J's answer非常相似:
def self.install_profile(profile)
UI.message "Installing provisioning profile..."
profile_path = File.expand_path("~") + "/Library/MobileDevice/Provisioning Profiles/"
uuid = ENV["SIGH_UUID"] || ENV["SIGH_UDID"]
profile_filename = uuid + ".mobileprovision"
destination = profile_path + profile_filename
# If the directory doesn't exist, make it first
unless File.directory?(profile_path)
FileUtils.mkdir_p(profile_path)
end
# copy to Xcode provisioning profile directory
FileUtils.copy profile, destination
if File.exist? destination
UI.success "Profile installed at \"#{destination}\""
else
UI.user_error!("Failed installation of provisioning profile at location: #{destination}")
end
end
我有一个脚本为我执行本地安装:
#!/bin/bash -euo pipefail
BASH_SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$BASH_SOURCE_DIR"
# by default bash passes the glob characters if nothing matched the glob
# disable that
# http://stackoverflow.com/a/18887210/9636
shopt -s nullglob
# this creates a proper bash array, which we need since our profiles
# have funny characters in them
MOBILE_PROVISIONS=(*.mobileprovision)
# re-enable default nullglob behavior
shopt -u nullglob
# On a brand new machine that has never run any app on a development device
# the ~/Library/MobileDevice/"Provisioning Profiles" directory doesn't exist
mkdir -p ~/Library/MobileDevice/"Provisioning Profiles"
for mobileprovision in "${MOBILE_PROVISIONS[@]}"
do
uuid=$( ./uuid-from-mobileprovision.bash "${mobileprovision}" )
cp "${mobileprovision}" ~/Library/MobileDevice/"Provisioning Profiles"/"${uuid}".mobileprovision
done
取决于另一个uuid-from-mobileprovision.bash
脚本:
#!/bin/bash -euo pipefail
if [ ! -f "${1}" ]
then
echo "Usage: $0 <path/to/mobileprovision/file>" 1>&2
exit 1
fi
UUID=$( grep --text --after-context=1 UUID "${1}" | grep --ignore-case --only-matching "[-A-Z0-9]\{36\}" )
if [ -z "${UUID}" ]
then
echo "Invalid mobileprovision file: ${1}" 1>&2
exit 2
else
echo "${UUID}"
fi
答案 4 :(得分:0)
我一直试图让这项工作有效。终于做到了!!
可以使用fastlane叹息下载并仅安装您需要的临时配置文件。
fastlane sigh renew --adhoc -n "provisional_profile_name"
--app_identifier "your_app_identifier" -u "apple_login _username" --ignore_profiles_with_different_name
注意:此命令已经需要应用程序的任何临时配置文件 安装在系统中。否则它会给我带来错误。
provisional_profile_name =只是个人资料名称的名称,不是 需要延期。