0

我正在尝试使用 Testflight 将 IPA 上传到我的应用程序测试人员,但它失败并出现以下错误:

IPA 无效:embedded.mobileprovision 中的 keychain-access-group 与您的二进制文件不匹配。

我很困惑,因为我认为我的设置非常标准,而且我还有另一个可以构建和分发的应用程序(注意:使用第二个开发人员帐户但在同一个 Xcode 实例中)。

这是我的设置:

  • 我在 Provisioning Portal 中创建的应用程序 ID 是com.bubblefoundry.Clear. 自然,它会以 Apple 分配的数字标识符作为前缀。
  • 我使用应用程序 ID 和所需设备创建了一个临时分发配置文件。我将它下载到 Xcode 中。
  • 产品名称Clear在 Xcode 中。
  • 目标的“Summary”选项卡下的包名称为com.bubblefoundry.Clear,其中 Clear 为浅灰色并由 Xcode 自动填充。虽然我可以在 之前或之后添加文本Clear,但我无法删除它。“信息”选项卡下的名称是com.bubblefoundry.${PRODUCT_NAME:rfc1034identifier}
  • 在项目和目标的代码签名构建设置中,Debug 和 Release 都设置为 Automatic Profile Selector 下的 iPhone Developer。我想我可能需要将 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>

看看这个,几乎所有的东西看起来都和我之前设置的一致。唯一的想法是,AppIDNameProject Clear,不是Clear。这是问题的根源吗?或者也许keychain-access-groups应该是app-id.com.bubblefoundry.Clear,不是app-id.*吗?

4

1 回答 1

1

在这种情况下,您的应用程序 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

于 2013-01-14T12:40:50.550 回答