xcodebuild 命令在 codesign 上失败,但日志显示使用的配置文件 uuid 不正确
xcodebuild command failing on codesign but logs show incorrect profile uuid being used
我尝试运行这个:
xcodebuild -scheme "MobileRenderStress.iOS" -destination "generic/platform=iOS" archive -archivePath /Applications/buildAgent/work/builds/MobileRenderStress-iOS.xcarchive
结果是:
<Many lines of irrelevant log that ends with...>
Signing Identity: "iPhone Developer: DK (RYQ82Z5555)"
Provisioning Profile: "iOSTeam Provisioning Profile: com.company.*"
(0b51596e-46c1-456a-a7bc-911858ad275a)
/usr/bin/codesign --force --sign A72FD8239B6355AE7DECC865F1A13226450F76C --entitlements /Users/builder/Library/Developer/Xcode/DerivedData/Technology-ajtzoltdytdzndgefjzzhzhiufjx/Build/Intermediates/ArchiveIntermediates/MobileRenderStress.iOS/IntermediateBuildFilesPath/MobileRenderStress.iOS.build/Debug-iphoneos/MobileRenderStress.iOS.build/MobileRenderStress.iOS.app.xcent /Users/builder/Library/Developer/Xcode/DerivedData/Technology-ajtzoltdytdzndgefjzzhzhiufjx/Build/Intermediates/ArchiveIntermediates/MobileRenderStress.iOS/InstallationBuildProductsLocation/Applications/MobileRenderStress.iOS.app
/Users/builder/Library/Developer/Xcode/DerivedData/Technology-ajtzoltdytdzndgefjzzhzhiufjx/Build/Intermediates/ArchiveIntermediates/MobileRenderStress.iOS/InstallationBuildProductsLocation/Applications/MobileRenderStress.iOS.app: User interaction is not allowed.
Command /usr/bin/codesign failed with exit code 1
** ARCHIVE FAILED **
The following build commands failed:
CodeSign /Users/builder/Library/Developer/Xcode/DerivedData/Technology-ajtzoltdytdzndgefjzzhzhiufjx/Build/Intermediates/ArchiveIntermediates/MobileRenderStress.iOS/InstallationBuildProductsLocation/Applications/MobileRenderStress.iOS.app
(1 failure)
我一直在 运行ning xcodebuild 命令来构建和归档(在这个例子中我正在归档)但是我收到了代码设计错误。混淆尤其来自于这样一个事实,即日志准确地指示它正在尝试使用(并成功找到)哪个配置文件 ID,但 "codesign" 的命令行指示不同的 ID。即使我在 xcodebuild 命令中指定了配置文件,它仍然会尝试在 codesign 行中使用这个不同的、不存在的 ID。
有没有人以前遇到过这个并且知道这个 ID 是从哪里来的?我 grep 了我的整个项目,但无处可寻。这有点令人毛骨悚然,真的。
重要说明:
当我更新配置文件以更改 ID 时,xcodebuild 命令仍然尝试在代码行使用 A72 ID。真的很郁闷!
我确实看到了日志中指示 "User interaction is not allowed." 的部分,尽管这与问题无关,但请知道它在应该绕过该错误的行中使用了 --force 命令,并且配置文件的签名密钥都是完全允许的,这是解决此类问题的另一种解决方法。
问题是由 "User interaction is not allowed." 引起的,这是因为它需要代码签名提示才能被接受,这在钥匙串解锁之前不能从命令行发生。
security unlock-keychain -p YOUR_PASSWORD ~/Library/Keychains/login.keychain
您也可能想直接在 xcode 中执行此操作并检查它是否在机器上运行。
我尝试运行这个:
xcodebuild -scheme "MobileRenderStress.iOS" -destination "generic/platform=iOS" archive -archivePath /Applications/buildAgent/work/builds/MobileRenderStress-iOS.xcarchive
结果是:
<Many lines of irrelevant log that ends with...>
Signing Identity: "iPhone Developer: DK (RYQ82Z5555)"
Provisioning Profile: "iOSTeam Provisioning Profile: com.company.*"
(0b51596e-46c1-456a-a7bc-911858ad275a)
/usr/bin/codesign --force --sign A72FD8239B6355AE7DECC865F1A13226450F76C --entitlements /Users/builder/Library/Developer/Xcode/DerivedData/Technology-ajtzoltdytdzndgefjzzhzhiufjx/Build/Intermediates/ArchiveIntermediates/MobileRenderStress.iOS/IntermediateBuildFilesPath/MobileRenderStress.iOS.build/Debug-iphoneos/MobileRenderStress.iOS.build/MobileRenderStress.iOS.app.xcent /Users/builder/Library/Developer/Xcode/DerivedData/Technology-ajtzoltdytdzndgefjzzhzhiufjx/Build/Intermediates/ArchiveIntermediates/MobileRenderStress.iOS/InstallationBuildProductsLocation/Applications/MobileRenderStress.iOS.app
/Users/builder/Library/Developer/Xcode/DerivedData/Technology-ajtzoltdytdzndgefjzzhzhiufjx/Build/Intermediates/ArchiveIntermediates/MobileRenderStress.iOS/InstallationBuildProductsLocation/Applications/MobileRenderStress.iOS.app: User interaction is not allowed.
Command /usr/bin/codesign failed with exit code 1
** ARCHIVE FAILED **
The following build commands failed:
CodeSign /Users/builder/Library/Developer/Xcode/DerivedData/Technology-ajtzoltdytdzndgefjzzhzhiufjx/Build/Intermediates/ArchiveIntermediates/MobileRenderStress.iOS/InstallationBuildProductsLocation/Applications/MobileRenderStress.iOS.app
(1 failure)
我一直在 运行ning xcodebuild 命令来构建和归档(在这个例子中我正在归档)但是我收到了代码设计错误。混淆尤其来自于这样一个事实,即日志准确地指示它正在尝试使用(并成功找到)哪个配置文件 ID,但 "codesign" 的命令行指示不同的 ID。即使我在 xcodebuild 命令中指定了配置文件,它仍然会尝试在 codesign 行中使用这个不同的、不存在的 ID。
有没有人以前遇到过这个并且知道这个 ID 是从哪里来的?我 grep 了我的整个项目,但无处可寻。这有点令人毛骨悚然,真的。
重要说明: 当我更新配置文件以更改 ID 时,xcodebuild 命令仍然尝试在代码行使用 A72 ID。真的很郁闷!
我确实看到了日志中指示 "User interaction is not allowed." 的部分,尽管这与问题无关,但请知道它在应该绕过该错误的行中使用了 --force 命令,并且配置文件的签名密钥都是完全允许的,这是解决此类问题的另一种解决方法。
问题是由 "User interaction is not allowed." 引起的,这是因为它需要代码签名提示才能被接受,这在钥匙串解锁之前不能从命令行发生。
security unlock-keychain -p YOUR_PASSWORD ~/Library/Keychains/login.keychain
您也可能想直接在 xcode 中执行此操作并检查它是否在机器上运行。