【问题标题】:Xcode building application from command lineXcode 从命令行构建应用程序
【发布时间】:2012-01-21 23:17:34
【问题描述】:

我正在使用这个脚本从命令行构建应用程序:

#!/bin/bash

TARGET="signtest"
CONFIGURATION="Debug"
SDK="iphoneos"    
IDENTITY="iPhone Developer: Marcin Zyga (CLJR93MXJ6)"
KEYCHAIN="/Users/admin/Library/Keychains/login.keychain"
PASSWORD="admin"


security unlock-keychain -p ${PASSWORD} ${KEYCHAIN}
xcodebuild -target "${TARGET}" -configuration ${CONFIGURATION} -sdk iphoneos CODE_SIGN_IDENTITY="${IDENTITY}" PROVISIONING_PROFILE="94D99766-0268-4E0E-B8D1-053063BB2DA1" OTHER_CODE_SIGN_FLAGS="--keychain ${KEYCHAIN}"

我正在尝试编译应用程序并使用我的配置文件对其进行签名。我得到:

Build settings from command line:
    CODE_SIGN_IDENTITY = iPhone Developer: Marcin Zyga (CLJR93MXJ6)
    OTHER_CODE_SIGN_FLAGS = --keychain /Users/admin/Library/Keychains/login.keychain
    PROVISIONING_PROFILE = 94D99766-0268-4E0E-B8D1-053063BB2DA1
    SDKROOT = iphoneos5.0

=== BUILD NATIVE TARGET signtest OF PROJECT signtest WITH CONFIGURATION Debug ===
Check dependencies
[BEROR]Code Sign error: The identity 'iPhone Developer: Marcin Zyga (CLJR93MXJ6)' doesn't match any valid certificate/private key pair in the default keychain


** BUILD FAILED **

这是我以sudo su - 调用的时候,可能我的钥匙串中缺少有效的配置。

当我以管理员用户身份调用此构建脚本时,我得到了这个:

Build settings from command line:
    CODE_SIGN_IDENTITY = iPhone Developer: Marcin Zyga (CLJR93MXJ6)
    OTHER_CODE_SIGN_FLAGS = --keychain /Users/admin/Library/Keychains/login.keychain
    PROVISIONING_PROFILE = 94D99766-0268-4E0E-B8D1-053063BB2DA1
    SDKROOT = iphoneos5.0

=== BUILD NATIVE TARGET signtest OF PROJECT signtest WITH CONFIGURATION Debug ===
Check dependencies
[BEROR]Code Sign error: Provisioning profile '94D99766-0268-4E0E-B8D1-053063BB2DA1' can't be found


** BUILD FAILED **

我的配置文件确实存在。

【问题讨论】:

    标签: xcode build continuous-integration


    【解决方案1】:

    你有两个问题。首先是 Xcode 4 和后来的一些东西正在改变我认为是命令行构建设置的搜索路径或访问权限,因为我,同样,在从命令行构建时使用相同的代码设计 [BEROR] 失败但是不是直接 Xcode。

    我希望我知道第一个问题的答案。我已经尝试明确设置开发者身份,使用通用的“iPhone Developer”,更新项目设置以具有 [sdk-iphoneos*]="" 等,但我必须找到解决方案。

    这是否对您有用,然后您进行了 Mac OS/Xcode 更新,但现在不行了?这就是我的困境。

    无论如何,您的第二个问题很容易解决:传递 PROVISIONING PROFILE 的完整路径和文件名,a-la "/Users/zyga/Library/MobileDevice/ProvisioningProfiles/94D99766-0268-4E0E-B8D1-053063BB2DA1.mobileprovision"

    ...A

    【讨论】:

    • 我与许多人交谈过,并确定当您从 10.6 或更高版本中以活动用户身份运行的 crontab 启动构建时,默认钥匙串路径与交互式登录时不同在。尽管您可以争辩说它“更安全”,但我觉得这是一个错误。以下是查看差异的方法:使用 bash 工具 security list-keychains。当我在从终端以交互方式运行的构建脚本的顶部执行此操作时,它会显示我的 /User/acoven/... 钥匙串。当我从 crontab 执行此操作时,我所有的 /User/acoven/... 钥匙串都不在活动钥匙串路径中。
    猜你喜欢
    • 2012-01-21
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 2013-09-25
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多