我尝试使用 Testflight 将 IPA 上传到我的应用测试人员,但失败并出现以下错误:
Invalid IPA: The keychain-access-group in in the embedded.mobileprovision and your binary don't match.
我很困惑,因为我认为我的设置非常标准,而且我有另一个可以很好地构建和分发的应用程序(注意:使用第二个开发人员帐户,但在同一个 Xcode 实例中)。
这是我的设置:
- 我在配置门户中创建的应用 ID 是
com.bubblefoundry.Clear
。当然,它会以 Apple 分配的数字标识符为前缀。 - 我使用应用 ID 和所需设备创建了一个临时分发配置文件。我将其下载到 Xcode 中。
- 产品名称在 Xcode 中为
Clear
。 - 目标“Summary”选项卡下的包名称为
com.bubblefoundry.Clear
,其中 Clear 为浅灰色,由 Xcode 自动填充。虽然我可以在Clear
之前或之后添加文本,但无法删除它。 “信息”选项卡下的名称为com.bubblefoundry.${PRODUCT_NAME:rfc1034identifier}
。 - 在项目和目标的代码签名build设置中,“调试”和“发布”均在“自动配置文件选择器”下设置为“iPhone 开发人员”。我认为我可能需要将 Release 设置为我的分发配置文件,但我没有在其他工作项目中执行此操作。
我可以很好地存档我的应用程序。然后,在组织器中,我可以告诉它分发它以进行临时开发,然后选择使用我之前创建的分发配置文件重新签名。没有报告错误。同样,我可以连接我的 iPhone 并在手机上运行该应用程序,不会出现任何问题。仅当我尝试使用 Testflight.app 上传 IPA 时,我才会被告知该文件无效。
因为它提到了 embedded.mobileprovision
,我想我应该深入 IPA 并检查该文件。以下是相关数据(减去唯一信息):
<plist version="1.0">
<dict>
<key>AppIDName</key>
<string>Project Clear</string>
<key>ApplicationIdentifierPrefix</key>
<array>
<string>app-id</string>
</array>
<key>CreationDate</key>
<date>2013-01-11T17:44:51Z</date>
<key>DeveloperCertificates</key>
<array>
<data>
my-certificate
</data>
</array>
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>app-id.com.bubblefoundry.Clear</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>app-id.*</string>
</array>
</dict>
<key>ExpirationDate</key>
<date>2013-10-07T17:44:51Z</date>
<key>Name</key>
<string>Project Clear Testers</string>
<key>ProvisionedDevices</key>
<array>
<string>device1</string>
<string>device2</string>
<string>device3</string>
<string>device4</string>
<string>device5</string>
</array>
<key>TeamIdentifier</key>
<array>
<string>app-id</string>
</array>
<key>TeamName</key>
<string>Bubble Foundry</string>
<key>TimeToLive</key>
<integer>269</integer>
<key>UUID</key>
<string>uuid</string>
<key>Version</key>
<integer>1</integer>
</dict>
</plist>
看看这个,一切看起来都与我之前设置的一致。唯一的想法是 AppIDName
是 Project Clear
,而不是 Clear
。这是问题的根源吗?或者也许keychain-access-groups
应该是app-id.com.bubblefoundry.Clear
,而不是app-id.*
?
最佳答案
在这种情况下,您的应用 ID 应为 com.bubblefoundry.Clear
。
如果您创建的配置文件如下:
com.bubblefoundry.*
您可以将此配置文件与各种 ID 一起使用。
com.bubblefoundry.Clear
com.bubblefoundry.my
com.bubblefoundry.Clear.newApp
com.bubblefoundry.testApp
com.bubblefoundry.yoyo
您可以在indo.plist中更改应用程序ID
将 com.bubblefoundry.${PRODUCT_NAME:rfc1034identifier}.
替换为必需的 Id,例如:com.bubblefoundry.myTestApp
。
关于ios - 我的 iOS 应用程序标识符应该是什么才能与我的配置文件配合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318531/