签名者无效错误

发布于 2024-08-13 15:42:33 字数 427 浏览 4 评论 0原文

我已经创建了我的应用程序的临时版本,并希望其他人来安装它。我在配置文件中有他们的设备 ID(实际上是两个)。我的证书对于临时和应用程序商店配置是相同的。该证书在钥匙串中有效。我在 Xcode 中为此构建选择了临时配置文件,该配置文件链接到分发证书。

我向用户发送配置文件和 .app 文件。他们将两者放入 iTunes 并同步,然后在两台设备上出现此错误:

The application "myapp" was not installed on the iPhone "user's iPhone" because the signer is not valid.

我已从 iPhone 中删除了所有配置文件,将上述两个文件放入 iTunes,同步并成功安装了应用程序。我无法让它为我重现。我需要在本地重现这个问题才能找出问题所在。有什么想法可以做到吗?

I've created an ad hoc build of my app and would like another person to install it. I have their device ID (two actually) in the provisioning profile. My certificate is the same for ad hoc and app store provisioning. The certificate is valid in keychain. I've selected the ad hoc profile in Xcode for this build, which is linked to the distribution certificate.

I send the user the provisioning file and .app file. They drop both into iTunes and sync then get this error on both devices:

The application "myapp" was not installed on the iPhone "user's iPhone" because the signer is not valid.

I've removed all profiles from my iPhone, dropped the above two files into iTunes, sync'd and installed the app successfully. I can't get it to repro for me. I need to repro this problem locally to figure out the issue. Any ideas how that can be done?

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

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

发布评论

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

评论(10

谢绝鈎搭 2024-08-20 15:42:33

您添加了权利吗?将签约放在目标级别,而不是项目级别?选择 Ad Hoc 配置文件?在构建之前进行清理吗?选择构建的 Ad Hoc 设备?

最好的办法是完全遵循Apple的文档,让您的构建设置完全与Apple的相匹配。

Did you add Entitlements? Put the signing at the Target level, not the Project level? Select the Ad Hoc profile? DO a clean prior to the build? Select the Ad Hoc Device foe the build?

The best bet is to follow Apple's documentation exactly, get your build settings to exactly match Apple's.

囚我心虐我身 2024-08-20 15:42:33

最好检查 .app 文件中捆绑的 imbedded.mobileprovision 文件,以确保 UID 位于其中。只需执行以下操作:

  1. unzip ProblemApp.ipa
  2. cd Payload/ProblemApp.app
  3. pico imbedded.mobileprovision

在此文件中查找您设备的 UID。如果它不存在,那么它可能没有添加到门户内的配置文件中。

It's a good idea to check the imbedded.mobileprovision file that comes bundled in the .app file to make sure that the UID is in there. Just do the following:

  1. unzip ProblemApp.ipa
  2. cd Payload/ProblemApp.app
  3. pico imbedded.mobileprovision

Look for the UID of your device within this file. If it's not there then it's probably not added to the provisioning file within the portal.

可是我不能没有你 2024-08-20 15:42:33

来自文档:

构建 Ad Hoc 应用程序
分布类似于构建一个
用于 App Store 分发的应用程序,带有
两个额外步骤的例外。
首先,您需要创建一个 Ad Hoc
分发配置文件和
添加 iOS 设备的 UDID
您想使用
iPhone 开发者计划配置
门户网站。其次,您需要创建一个
代码签名权利文件。为了
有关如何创建的信息
权利文件读取管理
应用程序权利部分
iOS 开发指南。


管理应用程序权限

iOS 提供对特殊内容的访问
资源和能力——例如
您的申请是否可以
调试——通过名为
的权利。指定权利
您的申请中的信息,您
添加权利属性列表文件
包含权利定义
(键/值对)到您的项目。
当您构建应用程序时,Xcode
将文件复制到生成的
应用程序包。

添加权利属性列表
文件到您的项目:

在组中&文件列表,选择
资源组。选择文件>新的
文件。选择“iOS”>代码签名>
权利模板。为文件命名
权利.plist。 (您可以使用任何
姓名;只需确保它与值匹配即可
代码签名权利构建
设置,如本节后面所述
部分。)设置的类型
属性列表文件到 iPhone
权利。选择文件后
在文本编辑器中,选择“查看”>“
属性列表类型> iPhone
权利列表。

将您的权利条目添加到
文件。对于每个权利属性
您需要定义:

单击“添加子项”或“添加兄弟项”
所选项目右侧的按钮
排。添加子按钮有三个
描绘层次结构的线,添加
兄弟按钮上有一个加号 (+)
它。选择权利属性
从出现的弹出菜单中。如果
您需要添加的权利
没有出现在菜单中,请选择
查看>属性列表类型>默认
对于文件类型。然后输入
权利密钥名称和类型。

输入属性的值。放
代码签名权利构建
将目标设置为名称
新添加的权利
属性列表文件。


一旦你
已创建您的权利文件
并将其添加到您的代码签名中
权利构建设置,打开
权利文件并添加或编辑
获取任务允许键并将其设置为
错误。

除了压缩您的 .app
捆绑以分发您的 Ad Hoc 构建
向测试人员等推荐
你还压缩了
之前的配置文件
由于某些电子邮件而分发
客户端和服务器可能会损坏
配置文件。

有关 Ad Hoc 的信息
分布请阅读
发布应用程序进行测试
iOS 开发指南中的部分。

From the docs:

Building an app for Ad Hoc
distribution is similar to building an
app for App Store distribution, with
an exception of two additional steps.
First, you need to create an Ad Hoc
Distribution Provisioning profile and
add the UDIDs of the iOS devices that
you want to distribute to using the
iPhone Developer Program Provisioning
Portal. Second, you need to create a
code-signing Entitlements file. For
information about how to create an
Entitlements file read the Managing
Application Entitlements section of
the iOS Development Guide.


Managing Application Entitlements

iOS provides access to special
resources and capabilities—such as
whether your application can be
debugged—through properties called
entitlements. To specify entitlement
information in your application, you
add an entitlement property-list file
containing entitlement definitions
(key/value pairs) to your project.
When you build your application, Xcode
copies the file to the generated
application bundle.

To add an entitlements property-list
file to your project:

In the Groups & Files list, select the
Resources group. Choose File > New
File. Choose the iOS > Code Signing >
Entitlements template. Name the file
Entitlements.plist. (You can use any
name; just ensure it matches the value
of the Code Signing Entitlements build
setting, as explained later in this
section.) Set the type of the
property-list file to iPhone
Entitlements. With the file selected
in the text editor, choose View >
Property List Type > iPhone
Entitlements plist.

Add your entitlement entries to the
file. For each entitlement property
you need to define:

Click the Add Child or Add Sibling
buttons to the right of the selected
row. The Add Child button has three
lines depicting a hierarchy, the Add
Sibling button has a plus (+) sign on
it. Choose the entitlement property
from the pop-up menu that appears. If
the entitlement you need to add
doesn’t appear in the menu, choose
View > Property List Type > Default
for File Type. Then enter the
entitlement-key name and type.

Enter the value for the property. Set
the Code Signing Entitlements build
setting for the target to the name of
the newly added entitlements
property-list file.


Once you
have created your Entitlements file
and added it to your Code Signing
Entitlements build setting, open the
Entitlements file and add or edit the
get-task-allow key and set it to
false.

In addition to compressing your .app
bundle to distribute your Ad Hoc build
to testers, etc. it is recommended
that you also compress the
provisioning profile before
distributing because certain email
clients and servers may corrupt the
provisioning profile.

For information about Ad Hoc
distribution please read the
Publishing Applications for Testing
section in the iOS Development Guide.

还给你自由 2024-08-20 15:42:33

我最近在最近的构建中与一位测试人员遇到了这个问题。事实证明,我的测试人员重置了他们的 iPod Touch,并在此过程中删除了配置文件。

只是需要考虑的事情。

I ran into this problem recently with one tester on a recent build. It turned out that my tester had reset their iPod Touch and removed the provisioning profile in the process.

Just something to consider.

┊风居住的梦幻卍 2024-08-20 15:42:33

我通过做一些比其他人发布的更愚蠢的事情来得到这个错误。我向配置文件添加了新设备,但忘记下载更新版本、将其添加到 Xcode 并将项目指向它。当我正确设置后,测试人员能够正常安装该应用程序。

I got this error by doing something dumber than anyone else has posted. I added new devices to the profile, but forgot to download the updated version, add it to Xcode, and point the project to it. When I set it up properly, testers were able to install the app fine.

彻夜缠绵 2024-08-20 15:42:33

这是另一个有趣的...如果您有 iphone 和 ipad 的单独权利文件,请确保为每个特定构建设置文件的目标...否则它将不会显示在构建中,您将得到这个错误

Here's another fun one.... if you have separate entitlement files for iphone and ipad, make sure you set the target for the file for each specific build...otherwise it won't show in the build and you'll get this error

土豪我们做朋友吧 2024-08-20 15:42:33

我来到这里是因为我和OP有同样的问题。事实证明,我的权利文件中没有 UDID,尽管我确定我在 XCode 管理器中使用了刷新。再次刷新没有什么区别。

最后,我删除了所有配置文件,然后进行了刷新。现在一切正常了。

我不知道这是我的设置中的故障还是操作员的错误。但以防万一其他人发现自己处于这种情况:删除您的配置文件然后进行刷新可能是值得的。

I arrived here because I had the same problem as the OP. It indeed turned out that I didn't have the UDID in the entitlements file, even though I'm sure I used refresh in the XCode organizer. Another refresh made no difference.

In the end I removed all provisioning profiles and then did a refresh. Things now work.

I have no idea whether this is a glitch in my setup, or an operator error. But just in case anyone else finds themselves in this situation: it may pay to remove your provisioning profiles and then do a refresh.

一人独醉 2024-08-20 15:42:33

对于运行 IOS 3.1.3 的 iphone 3G,这对我来说不起作用。我通过查看设置 - >常规(没有列出配置文件选项)来验证手机上没有分发配置文件。

然后我安装了 iphone 配置实用程序:

http://support.apple.com/kb/DL851

然后:

  1. 运行iphone config,
  2. 将embedded.mobileprovision文件拖放到应用程序中,
  3. 单击左侧的设备,
  4. 单击“配置配置文件”选项卡
  5. ,单击配置文件,然后单击“安装”按钮,

然后应用程序就安装好了。

This wouldn't work for me with an iphone 3G running IOS 3.1.3. I verified that the distribution profile wasn't on the phone by looking at settings->general ( there was no profile option listed).

I then installed the iphone config utility:

http://support.apple.com/kb/DL851

Then:

  1. run iphone config
  2. drag and drop embedded.mobileprovision file to app
  3. click device on left side
  4. click "provisioning profiles" tab
  5. click on the profile and then click the "install" button

Then the app installed just fine.

空‖城人不在 2024-08-20 15:42:33

我也遇到了和OP同样的问题。愚蠢的错误:当我将其注册为设备时,我不小心从试图临时分发的设备上遗漏了最后两位数字。

I had the same problem as the OP too. Dumb mistake: I accidentally dropped the last two digits off the device I was attempting to ad hoc distribute to when I registered it as a device.

自我难过 2024-08-20 15:42:33

我遇到了两次同样的问题(xcode 4.2 ios 5),

第一次,我忘记在架构中添加armv6,

第二次,我创建了许多具有相同开发人员ID的配置文件,我应该删除其他密钥-根据捆绑包标识符的使用进行链...并且我错误地删除了有效的并使用了其他kechain

I got same problem two times ( xcode 4.2 ios 5)

1st,time i forgot to add armv6 in architecture

2nd, time i have created to many provisioning files with same developer id that i should delete others key-chain according to use of bundle identifier ...and i mistakenly deleted valid and used other kechain

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文