来自命令行的 xcodebuild - 权利问题 -SecItemCopyMatching:缺少权利
Posted
技术标签:
【中文标题】来自命令行的 xcodebuild - 权利问题 -SecItemCopyMatching:缺少权利【英文标题】:xcodebuild from command line - entitlement issues -SecItemCopyMatching: missing entitlement 【发布时间】:2013-03-19 17:46:04 【问题描述】:我有两个应用程序 - 一个名称中有空格,另一个没有。当我尝试通过命令行构建过程运行应用程序时,我遇到了应用程序无法正常运行的问题 - 即:“SecItemCopyMatching:缺少权利”
--- 当我尝试使用空格检查应用程序命令行上的权利时:
>machine:Release-iphoneos builder$ codesign -d --entitlements - Application\ Name.app
Executable=/Users/Shared/Jenkins/Home/jobs/My_Application_Name/workspace/build/Release-iphoneos/Application Name.app/Application Name
--- 当我在名称中没有空格的应用程序上运行它时:
machine:Release-iphoneos builder$ codesign -d --entitlements - application.app
Executable=/Users/Shared/Jenkins/Home/jobs/My_Application_Name/workspace/ios/build/Release-iphoneos/Application.app/Application
??qq?<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>ABC123456.com.company.app</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>ABC123456.com.company.app</string>
</array>
</dict>
</plist>
所以这里最大的问题是 - 此应用程序名称已在全球范围内使用,我无法更改它 - 如何解决此问题以便我可以进行这些命令行构建?
恕我直言:Apple 在 xcode 中的非 posix 合规性方面犯了一个大错误。
任何建议表示赞赏。
APPLE 的回复:“只有在使用 Xcode 应用程序构建和签署您的应用程序时,DTS 才支持 iOS 应用程序的代码签名。使用 xcodebuild 签署 iOS 应用程序的工作流程不受支持。”
所以他们不支持自己的命令行工具...
【问题讨论】:
您使用的是哪个版本的 Xcode,您有最新版本的命令行工具吗?我刚刚设置了一个名为“Test App.app”的带有空格的测试应用程序,并且能够运行您遇到问题的权利检查。我在 Xcode 4.6.2 上使用最新的命令行工具。 现在可以使用了。一夜之间,我没有进行任何真正的修改,可能是删除并重新提取了我的配置文件。 【参考方案1】:删除所有配置文件可能解决了这个问题,尽管我在上次没有运气之前做过几次。一个晚上,它在自动化构建中自行解决,令我惊讶的是......
【讨论】:
以上是关于来自命令行的 xcodebuild - 权利问题 -SecItemCopyMatching:缺少权利的主要内容,如果未能解决你的问题,请参考以下文章
xcodebuild 未签名 IPA - 缺少推送通知权利(在 XCode 中直接签名应用程序时工作)
为啥 Xcode 12.5 `xcodebuild -archive` 抱怨在没有 AppClip 的应用程序中缺少 appclip 权利?