就我而言,我的配置文件中的内容:
security cms -D -i ~/Downloads/spolskyDevelop.mobileprovision
...
<key>application-identifier</key>
<string>P5GM95Q9VV.com.dca.spolsky</string>
<key>aps-environment</key>
<string>development</string>
与实际构建的应用程序中的内容不同(您可以通过查看 Xcode 的 Logs 选项卡来了解它的构建位置)
codesign -d --entitlements - '/Users/drew/Library/Developer/Xcode/DerivedData/spolsky-bdbtdfjeeywhqzccpmmceqvnhgtm/Build/Products/Debug-iphoneos/spolsky-ios.app'
<dict>
<key>application-identifier</key>
<string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
</array>
</dict>
即使代码签名身份下的“当前匹配”提示文本指示正确的配置文件,这也是正确的——很奇怪,是吗?为了让一个奇怪的故事更奇怪,当我运行时,正确的配置文件被安装在设备上,(设置->常规->配置文件)让我相信配置文件是正确的——但它回退到通配符 ID当应用程序实际启动时。
线索是这两个命令的输出不同:
Y2X6Z7Z2GR .com.dca。spolsky-ios与P5GM95Q9VV .com.dca。斯波尔斯基
当我使粗体部分匹配时,斜体部分自动更改为匹配。此外,security和codesign的输出一致,没有aps-entitlement错误。
我的猜测是 XCode 在我的非通配符 ID 上使用了通配符样式的匹配。(毕竟,“spolsky”非常接近“spolsky-ios”),这解释了“当前匹配”输出。但是构建链中的某些东西对此更加严格,因此在构建期间它会回退到实际的通配符 ID。