Ben*_*ton 47 bash xcodebuild ios xcrun
我正在尝试使用在Mac Mini Server(OSX 10.7)上运行的bash脚本自动化为客户构建应用程序的过程.
我的脚本基于github上最有用的脚本,最初发布于https://gist.github.com/949831
我正在使用xcodebuild构建应用程序,然后使用xcrun签名并嵌入mobileprovision文件.
当我使用mobileprovision文件完成所有这些操作时,我使用GUI手动安装到Xcode中(例如双击),它可以正常工作.如果我只是尝试使用复制到SCP服务器上的mobileprovision文件失败(代码签名错误:无法找到供应配置文件'123abc123'.)
大概这是因为文件没有"安装".
有没有办法从终端安装mobileprovision文件?我正在使用SSH,所以使用诸如'open'命令之类的东西是行不通的.
谢谢!
nsc*_*hum 72
如果您不想下载外部依赖项(如Ben所做的那样),以下情况应该适用于大多数情况:
uuid=`grep UUID -A1 -a adhoc.mobileprovision | grep -io "[-A-F0-9]\{36\}"`
cp adhoc.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/$uuid.mobileprovision
Run Code Online (Sandbox Code Playgroud)
需要注意的是一个UUID是由十六进制数字,以便正确的范围[-A-F0-9],而不是[-A-Z0-9].
使用cupertino工具,以下代码段从Developer Portal下载所有分发配置文件并进行安装.
ios profiles:download:all --type distribution
for file in *.*provision*; do
uuid=`grep UUID -A1 -a "$file" | grep -io "[-A-F0-9]\{36\}"`
extension="${file##*.}"
echo "$file -> $uuid"
mv -f "$file" ~/Library/MobileDevice/Provisioning\ Profiles/"$uuid.$extension"
done
Run Code Online (Sandbox Code Playgroud)
cupertino(ios命令)可以安装sudo gem install cupertino.
Ben*_*ton 26
自从提出这个问题以来,我自己就建立了一个解决方案.秘诀就是简单地将文件复制到〜/ Library/MobileDevice/Provisioning Profiles /文件夹,但是(这里是棘手的位)重命名为[The UUID] .mobileprovision.
UUID保存在文件本身的文本部分内(在plist中).不幸的是,该文件还包含二进制文件,因此"默认读取"无法读取它.幸运的是,这个人已经构建了一个小命令行实用程序来获取UUID(以及其他一些东西).
这是我的完整工作脚本:
https://gist.github.com/2568707
所有其他答案的汇编update_provisioning_profile.sh:
#!/bin/sh
#
# Download and install a single iOS provisioning profile
# Requires https://github.com/nomad/cupertino
#
# Usage
# - Login to your account once:
# ios login
# - Configure TEAM and PROFILE (instructions below)
# - Run update_provisioning_profile.sh at anytime, usually after adding/removing devices to the profile
# Configure the team identifier
# Copy it from developer portal or just use cupertino to get it:
# ios devices
# Copy the string in parens and set it as TEAM
TEAM="team id"
# Configure the profile name you want to manage
# Copy it from developer portal or use cupertino to get a list (ignoring Xcode managed profiles):
# ios profiles --team ${TEAM} | grep -v 'iOS Team Provisioning Profile'
# Copy the name as-is and set as PROFILE
PROFILE="profile name"
# Fetch the profile using `cupertino` tool
# you need to run `ios login` once to setup the account
ios profiles:download "${PROFILE}" --team ${TEAM}
PROFILE_FILE=`echo $PROFILE | tr ' ' '_'` # `cupertino` tool will replace spaces with _
UUID=`/usr/libexec/PlistBuddy -c 'Print :UUID' /dev/stdin <<< $(security cms -D -i ${PROFILE_FILE}.mobileprovision)`
# copy where Xcode can find it
cp ${PROFILE_FILE}.mobileprovision "$HOME/Library/MobileDevice/Provisioning Profiles/${UUID}.mobileprovision"
# clean
rm ${PROFILE_FILE}.mobileprovision
Run Code Online (Sandbox Code Playgroud)
易于适应您的配置需求.
| 归档时间: |
|
| 查看次数: |
29838 次 |
| 最近记录: |