当前位置:  开发笔记 > 编程语言 > 正文

在制作iPhone应用程序时,从xcodebuild中设置配置文件

如何解决《在制作iPhone应用程序时,从xcodebuild中设置配置文件》经验,为你挑选了3个好方法。

我正在使用xcodebuild命令行编译我的iPhone应用程序.有没有办法传递某种选项来设置配置文件?一般来说,关于xcodebuild的信息似乎不多.



1> Rob..:

实际上,您应该只需将其添加到XCode命令行设置即可.

xcodebuild [无论你有什么其他选择] PROVISIONING_PROFILE ="[你的个人资料中的唯一ID]"

从命令行构建设置应该覆盖所有内容,因此这应该胜过项目或目标中定义的任何内容.


让我失望的一件事:您在XCode界面中看到的设置实际上是两个设置 - PROVISIONING_PROFILE和CODE_SIGN_IDENTITY.如果您执行客户端工作并具有多个签名标识,请注意从命令行正确设置这些标识.
如何找到PROVISIONING_PROFILE的名称和CODE_SIGN_IDENTITY的名称?
PROVISIONING_PROFILE的UDID来自配置文件本身.这些配置文件在技术上是二进制文件,因为它们包含签名数据,但您仍然可以在文本编辑器中打开它们并查找UDID: UUID longstring .CODE_SIGN_IDENTITY是证书的"公用名"字段,您可以在密钥链访问中看到该字段.

2> jkp..:

我的解决方案并不优雅,但它确实可以完成工作并让我自动化构建服务器上的所有内容:

#!/bin/bash

TARGET="Your App"
CONFIGURATION="Release"
SDK="iphoneos"
PROFILE_PATH="/Users/jkp/Desktop/foo.mobileprovision"
IDENTITY="iPhone Distribution: Your Company Ltd"
KEYCHAIN="/Users/jkp/Desktop/keychain"
PASSWORD="foobar"

open "${PROFILE_PATH}"
sleep 5
osascript -e "tell application \"Xcode\" to quit"
security unlock-keychain -p ${PASSWORD} ${KEYCHAIN}
xcodebuild \
  -target "${TARGET}" \
  -configuration ${CONFIGURATION} \
  -sdk iphoneos \
  CODE_SIGN_IDENTITY="${IDENTITY}" \    
  OTHER_CODE_SIGN_FLAGS="--keychain ${KEYCHAIN}"

这里的关键是我不需要先安装配置文件.我实际上有另一个脚本,它使用mechanize在每次构建之前下载配置文件的最新副本,这意味着我们可以远程更新配置文件(例如添加新设备),并且我们的CI服务器可以在没有任何额外工作的情况下获取这些更改.

注意:我已经找到了一种安装或更新配置文件的方法,而无需涉及Xcode - 更清洁!请参阅此处了解详细信息.


**注意:**中的链接已经死了.有没有机会你可以在其他地方发布或恢复它?
回程快照链接http://web.archive.org/web/20101127065710/http://devblog.vworkapp.com/post/160876198/add-hoc-iphone-distribution-and-ci-pt-2
别介意我以前的评论.我在这个问题中找到了答案:http://stackoverflow.com/questions/4744959/command-line-update-of-provisioning-profiles

3> BitByteDog..:

供应配置文件必须由UUID提供,在我的情况下,供应配置文件被签入源控制系统,因此由开发人员/构建服务器/ CI系统用代码检出.在源树中,配置文件具有人类可读的名称,例如MyApp.mobileprovison,并且位于名为"ProvisioningProfiles"的目录中.要创建xcode存档,必须重命名配置文件并将其复制到〜/ Library/MobileDevice/Provisioning Profiles目录,然后xcodebuild才能识别它们.这是一个可以在CI构建脚本中使用的代码段.

# The keychain needs to be unlocked for signing, which requires the keychain
# password. This is stored in a file in the build account only accessible to
# the build account user
if [ ! -f $HOME/.pass ] ; then
    echo "no keychain password file available"
    exit 1
fi

case `stat -L -f "%p" $HOME/.pass`
in
    *400) ;;
    *)
        echo "keychain password file permissions are not restrictive enough"
        echo "chmod 400 $HOME/.pass"
        exit 1
        ;;
esac

#
# unlock the keychain, automatically lock keychain on script exit
#
security unlock-keychain -p `cat $HOME/.pass` $HOME/Library/Keychains/login.keychain
trap "security lock-keychain $HOME/Library/Keychains/login.keychain" EXIT

#
# Extract the profile UUID from the checked in Provisioning Profile.
#
uuid=`/usr/libexec/plistbuddy -c Print:UUID /dev/stdin <<< \
        \`security cms -D -i ProvisioningProfiles/MyApp.mobileprovision\``

#
# Copy the profile to the location XCode expects to find it and start the build,
# specifying which profile and signing identity to use for the archived app
#
cp -f ProvisioningProfiles/MyApp.mobileprovision \
        "$HOME/Library/MobileDevice/Provisioning Profiles/$uuid.mobileprovision"
xcodebuild -workspace MyApp.xcworkspace -scheme MyScheme \
        -archivePath build/MyApp.xcarchive archive \
        PROVISIONING_PROFILE="$uuid" CODE_SIGN_IDENTITY="iOS Distribution"

必须解锁钥匙串,并且必须允许"/ usr/bin/codesign"工具访问与签名身份相关联的私钥才能工作 - 使用以下引用 /sf/ask/17360801/ 2351246并添加代码签名到没有钥匙串的私钥ACL,分别用于解锁和添加代码签名的密钥链访问.

如果随后使用xcodebuild将存档导出到IPA,则必须考虑以下问题(xcodebuild不从.app复制文件).需要再次提供配置文件.用于创建IPA的脚本片段是

profileName=`/usr/libexec/plistbuddy -c Print:Name /dev/stdin <<< \
        \`security cms -D -i ProvisioningProfiles/MyApp.mobileprovision\``

xcodebuild \
        -exportArchive \
        -exportFormat IPA \
        -archivePath build/MyApp.xcarchive \
        -exportPath $IPADIR/MyApp.ipa \
        -exportProvisioningProfile "$profileName"

在此命令运行时,必须解锁钥匙串.

UPDATE

在OSX Mavericks(v10.9.5)和OSX Yosemite上,我们开始看到代码签名错误:

Codesign check fails : ...../MyApp.app: resource envelope is obsolete

在这里查看此帖子的原因xcodebuild - codesign -vvvv说"资源信封已过时"

要在引用的帖子中实现Apple Support建议的更改,请运行以下命令:

 sudo perl -pi.bak -e 's/--verify"./--verify", "--no-strict",/ if /codesign.*origApp/;' `xcrun -sdk iphoneos -f PackageApplication`

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有