未安装应用程序 XXX ...因为权利无效

发布于 2024-10-20 10:35:19 字数 1497 浏览 6 评论 0原文

我正在尝试为一小群非开发人员测试人员创建一个构建,以便在将我的应用程序提交到 iTunes Connect 之前对其进行一些 Beta 测试。我已阅读 "分发您的应用程序进行测试(您可能需要在 Apple 注册才能阅读此内容)以及 关于 Ad Hoc 分发的技术说明 TN2250,以及无数的博客文章和 Stack Overflow 文章,但迄今为止尚未取得成功。

我采取的步骤:(

  • 我正在运行 Xcode 3.2.5。)
  • 我创建了一个 Development iOS 中的配置文件 配置门户,包括 适合所有测试人员的设备。
  • 我已经下载了此配置文件并且 通过拖动将其安装到 Xcode 中 它到管理器窗口,我可以 请参阅下面的个人资料 开发>配置配置文件
  • 我已将此配置文件设置为“代码 签名身份>任何 iOS” 项目和目标设置
  • 我创建了一个 Entitlements.plist 文件,将属性列表类型设置为 “iPhone 权利 plist”,已删除 除“可以 已调试”,并将其设置为未选中
  • 我已设置“代码签名 权利”到 Entitlements.plist (准确的、区分大小写的名称) 项目和目标设置
  • 我已经“构建并存档”了我的项目
  • 从管理器窗口中,我已经 选择我的项目&点击了 “共享...”,选择相同 上面使用的配置文件和 将生成的 .ipa 保存到磁盘
  • 我已压缩 .ipa 和 将配置文件配置为 zip 文件 并通过电子邮件将其发送给我的测试人员

测试人员已:

  • 解压缩我发送的文件
  • 尝试通过拖动来安装 .ipa 到 iTunes 并同步
  • 尝试通过首先拖动进行安装 将 .mobileprofile 添加到 iTunes 并 无论哪种情况,在同步

结束时,他们都会看到一个对话框,内容为“应用程序 [我的应用程序名称] 未安装在[他们的设备和设备名称] 上”因为这些权利无效。”

还值得注意的是,去年秋天我能够将同一个应用程序的早期版本分发给相同的测试人员,没有任何问题,也没有权利列表。除了升级 Xcode 之外,我不确定还发生了什么变化。

任何人都可以提供任何见解或看看我做错了什么吗?

[我还在苹果开发者论坛上发布了此内容,并将在此处重新发布所有解决方案。]

I'm trying to create a build for a small group of non-developer testers to do some beta testing on my App before I submit it to iTunes Connect. I have read the Developer's Guide on "Distributing Your App for Testing (you may need to be registered with Apple to read this) as well as Technical Note TN2250 on Ad Hoc distribution, and innumerable blog posts and Stack Overflow articles, but with no success thus far.

Steps I've taken:

  • (I'm running Xcode 3.2.5.)
  • I've created a Development
    Provisioning Profile in the iOS
    Provisioning Portal, and included the
    devices for all the testers.
  • I have downloaded this profile and
    installed it into Xcode by dragging
    it to the Organizer window, and I can
    see the profile under
    Development>Provisioning Profiles
  • I've set this profile as the "Code
    Signing Identity>Any iOS" in both the
    project and target settings
  • I've created an Entitlements.plist
    file, set the property list type to
    "iPhone Entitlements plist", deleted
    all rows except the "Can be
    debugged", and set that to unchecked
  • I've set the "Code Signing
    Entitlements" to Entitlements.plist
    (the exact, case-sensitive name) in
    both the project and target settings
  • I've "Build and Archive"'d my project
  • From the Organizer window, I've
    selected my project & clicked
    "Share...", selected the same
    provisioning profile used above and
    saved the resulting .ipa to disk
  • I've compressed the .ipa and the
    provisioning profile to a zip file
    and e-mailed it to my testers

The testers have:

  • Unzipped the file I sent
  • Tried installing by just dragging the
    .ipa to iTunes and syncing
  • Tried installing by first dragging
    the .mobileprofile to iTunes and
    syncing

In either case, at the end of syncing, they get the dialog reading "The app [my app name] was not installed on the [their device and device name] because the entitlements are not valid."

It may be worth also noting that I was able to distribute an earlier version of this same App to the same testers last Autumn without any problems and without an entitlements list. I'm not sure what has changed, other than upgrading Xcode.

Can anyone provide any insight or see what I'm doing wrong?

[I have also posted this on Apple's Developer forums and will re-post any solutions here.]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谁的年少不轻狂 2024-10-27 10:35:19

*.ipa 文件应该已包含配置文件。如果您使用 zip 实用程序,您可以在 Windows 计算机上轻松看到这一点。该文件只是一个具有不同扩展名的 zip 存档。

设备上的 iOS 版本是否适用于该应用程序?

设置> 的设备上一般>配置文件 您可以看到已安装的任何配置配置文件的列表,以消除该问题。添加新设备时创建的每个新证书都会获得多个副本。删除所有配置文件并检查是否添加了最新的配置文件并没有什么坏处。

当您进行构建时,在构建结果中右键单击并选择以转录文本文件形式打开这些最新结果,然后搜索CodeSign,它将显示该步骤的输出,您应该清楚地看到使用了哪个配置文件。您还可以搜索 Entitlements.plist 检查使用的路径,然后查看该文件。

你说你删除了所有行。我没有 Can be debugged 条目,但我有
application-identifierkeychain-access-group 听起来与代码签名非常相关。这是您可以尝试的文件的纯文本版本;

<?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>
    <!--- Required entitlements (in most cases shouldn't be changed) --->
    <key>application-identifier</key>
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>

    <!--- Custom entitlements below --->


</dict>
</plist>

如果其中任何一个看起来有问题,这些是苹果在准备发行版本时建议的步骤;

  1. 选择目标并打开构建设置检查器。确认您是
    在分发配置中。
  2. 删除代码签名身份:iOS 发行版:COMPANYNAME
  3. 在 Xcode 构建菜单中,选择清理所有目标。
  4. 使用 Finder 删除 Xcode 项目中任何现有的构建目录。
  5. 重新启动 Xcode 并打开您的项目。
  6. 在目标构建设置检查器中重新输入代码签名身份 iOS Distribution : COMPANYNAME。
  7. 重建您的项目。

希望其中一些能有所帮助或激发灵感!片刻。

The *.ipa file should already contain the provisioning profile. You can see that easily from a Windows machine if you use a zip utility. The file is just a zip archive with a different extension.

Are the devices on the correct version of iOS for the application?

On the devices in Setting > General > Profiles you can see a list of any provisioning profiles that are installed to eliminate that as an issue. You get multiple copies with every new certificate created when you add new devices. It doesn't hurt to remove all the profiles and check that your latest one gets added.

When you do your build, in the Build Results right click and select Open These Latest Results as Transcript Text File then search for CodeSign which will show you the output for that step and you should clearly see which profile was used. You can also search for Entitlements.plist check the path used and then look at that file.

You say you deleted all the rows. I don't have a Can be debugged entry but I do have
application-identifier and keychain-access-group which sound quite code signing related. Here's the plain text version of the file which you could try;

<?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>
    <!--- Required entitlements (in most cases shouldn't be changed) --->
    <key>application-identifier</key>
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>

    <!--- Custom entitlements below --->


</dict>
</plist>

If any of that appears wrong these are the steps Apple suggest in preparing a distribution build;

  1. Select the Target and open the Build Settings Inspector. Confirm you are
    in the Distribution Configuration.
  2. Delete the Code Signing Identity: iOS Distribution : COMPANYNAME
  3. In the Xcode Build Menu, select Clean all Targets.
  4. Delete any existing build directories in your Xcode project using Finder.
  5. Re-launch Xcode and open your Project.
  6. Re-enter the code-signing identity iOS Distribution : COMPANYNAME in the Target Build Settings Inspector.
  7. Rebuild your Project.

Hope some of that helps or sparks an ah-ha! moment.

缘字诀 2024-10-27 10:35:19

Xcode 4 中的 Ad Hoc 构建不再需要代码签名权利 - 请参阅 Apple 技术说明 TN2250

Code signing entitlements are no longer necessary for Ad Hoc builds in Xcode 4 - see details notes in Apple Technical Note TN2250

江湖彼岸 2024-10-27 10:35:19
  1. 转到开发人员网站并登录。
  2. 在“配置配置文件”下选择“开发”。
  3. 双击打开您的配置文件。
  4. 您将看到 "App ID: somenameyouwrote(com.somenameyouwrote)"
  5. 准确写下括号之间的内容,即 "com.somenameyouwrote"
  6. 在 XCode 中打开 .plist 文件。
  7. “bundle identifier:” 下,输入您在第 5 步中记下的内容。
  8. 在 XCode 中,点击 “Targets” 旁边的箭头,然后双击带有您的名称的目标。美联社
  9. 在打开的目标信息窗口中,确保选择“Build”
  10. 打开“代码签名身份”,然后在其下方选择“任何 iOS”
  11. “任何 iOS” 右侧,选择列出的配置文件,其 Ap 标识符与您在 plist 中编写的配置文件匹配。
  12. 嘭!沮丧结束!
  1. Go to the developer website and sign in.
  2. Under "Provisioning Profiles" select "Development."
  3. Open your provisioning profile by double clicking it.
  4. You will see "App ID: somenameyouwrote(com.somenameyouwrote)"
  5. Write down exactly what is between the brackets i.e. "com.somenameyouwrote"
  6. In XCode open the .plist file.
  7. Under "bundle identifier:" type whatever you wrote down in step 5.
  8. In XCode Hit the arrow by "Targets" and double click the target which will bear the name of your ap.
  9. In the target info window that opens make sure that "Build" is selected.
  10. Open the "Code Signing Identity" and underneath it select "Any iOS".
  11. To the right of "Any iOS" select the profile listed whose Ap Identifier matches the one you wrote in the plist.
  12. BAM! Frustration over!
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文