繁体   English   中英

无效的 iPhone 应用程序二进制文件

[英]Invalid iPhone Application Binary

我正在尝试将应用程序上传到 iPhone App Store,但我从 iTunes Connect 收到此错误消息:

您上传的二进制文件是无效的。 签名无效,或未使用 Apple 提交证书签名。


注意:原始问题的详细信息已被删除,因为此页面已变成有关该特定错误消息的可能原因的所有信息的存储库。

有关将 iPhone 应用程序提交到 App Store 的一般信息,请参阅将 iPhone 应用程序上传到 AppStore 的步骤

根据我的经验,Xcode偶尔会对使用哪种签名证书感到困惑。 我养成了在对代码签名设置进行任何更改(并进行干净构建)以解决此问题后退出并重新启动Xcode的习惯。

我只是想提一下,我也从命令行中遇到了zip问题。 问题在于它默认处理符号链接的方式。 使用:

zip -y -r myapp.zip myapp.app

解决了这个问题。

我有同样的问题并以这种方式解决了它:

属性证书安装在我的开发机器上,mobileprovision.embedded包含在分发存档中。 经过一个小时左右的谷歌搜索和挖掘后,我发现了源错误。 在Xcode中,我复制了Release配置并创建了一个新的Distribution配置,然后将签名身份更改为我的分发证书。 但是,即使它已在GUI中更新,项目文件也未正确更新。

如果您遇到相同的错误,请在[ProjectName] .xcodeproj目录中查找project.pbxproj文件,并在您喜欢的编辑器中打开它。 查找“分发”部分。 我破碎的那个看起来像这样:

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Developer: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Developer: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
};
name = Distribution;
};

您可以在第二部分中看到签名标识和配置文件不正确。 编辑它以匹配第一部分,重建,你应该很高兴去。 最后一个看起来像这样:

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Distribution: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “F00D3778-32B2-4550-9FCE-1A4090344400″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
};
name = Distribution;
};

guids改变以保护无辜者

同样的问题,不同的解决方

在我的情况下,我正在使用zip -r myapp.zip myapp.app压缩文件zip -r myapp.zip myapp.app结果,zip命令拧紧了捆绑包。 从取景器压缩它使它工作。

我遇到了同样的问题,在尝试了几件事之后 - 我从代码签名权利中删除了.plist权利(只是留空),它构建得很好并且上传了最终版本。

祝你好运:-D

我也有同样的问题,在构建时我注意到构建中没有添加配置。

我的修复方法是将构建设置为iphone设备,因为我通常使用模拟器,但之后它不会包含配置文件......

这可能是一个noob错误。 通常情况下,您无法构建设备,但是当您进行分发时,您可以。

另一个数据点:有一段时间,我的应用程序经历了。 现在我已经添加了对应用内购买的支持,突然它失败了“无效的二进制/无效签名”问题。 仔细观察后,我发现权利plist文件中的application-identifier值已关闭。

这很可能与我将配置配置文件从通配配置文件替换为特定应用配置文件(应用内购买所需)的事实有关。 旧配置文件下的错误应用ID限定。 它与info.plist中的应用ID不匹配,但显然iTunes原谅了这一点。

所以,回顾一下:

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.*

没问题,而

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.foo

导致“无效的二进制文件”。

这是我遇到的一个问题:我在上传之前将二进制文件添加到Subversion。 比较/压缩二进制文件然后包括隐藏的.svn目录,这搞砸了代码签名。

在阅读了上述各种帖子后,我尝试了各种各样的事情。 最终对我有用的是完全开始! 我删除了与我的应用相关联的每个证书和配置文件。

我重新创建了一个新的开发证书和一个新的分发证书。 我再次下载了中间证书。 然后我重新创建了开发配置文件和分发配置文件。

安装三个证书后(我注意到这次发布有私钥和公钥)和两个配置文件(我的发布配置文件没有被标记为没有有效的证书!),一切正常。

一旦我决定撤销所有内容并重新开始,创建新内容并重新安装只需要大约5分钟。

请参阅此链接以获取解决方案:

http://greghaygood.com/2010/09/04/invalid-binary-message-from-itunesconnect

简短的回答是“最终我仔细检查了我的info.plist并发现了一些东西。我按照新指南添加了CFBundleIconFiles,但是数组列表中有一个空条目。我删除了它并重新提交,最后公认!”

好吧,在多次重复这些步骤之后,我终于成功上传了我的应用程序。

我不确切知道是什么修复它,但在成功尝试之前,我关闭了Xcode和Firefox并重新启动它们。 我猜其中一个应用程序有一些糟糕的juju。

我有一个类似的问题,但在Monotouch。 我发现我的发布配置文件已设置为使用开发人员证书。 它应该如下所示: 在此输入图像描述

看来这个问题有很多原因。 这是我的解决方案:

这适用于属于多个开发团队的任何人(例如您自己的应用程序和您的公司)。

如果您使用一组凭据构建构建并使用其他凭据重新签名(例如,对于adhoc / appstore分发),则必须确保构建最初是使用属于同一iOS开发团队的凭据构建和签名的。您要重新签名的分发凭据属于

因此,不要使用“Indy Dev Inc”凭据构建,然后尝试使用“Company Inc”凭据进行部署。 确保设置“Company Inc”开发和分发凭据,并使用它们。

我在我的博客上发布了更多相关信息: http//omegadelta.net/2011/06/09/fiendish-ios-code-signing-invalid-binary-issue/

我有同样的问题。 我已准备好解决这个问题,但当我使用Murky检查我的代码时,我想出来了。 我总是在我签入之前浏览更改的文件上的差异。这次我这样做时注意到project.pbxproj文件已经改变了....在分发部分中,“PROVISIONING_PROFILE [sdk = iphoneos *]的条目“空白。

退出并重新启动Xcode对我不起作用。 相反,我进入了我的项目和目标设置,并更改了代码签名以直接选择我的分发配置文件,而不是依赖于自动选择功能。 执行此操作会导致project.pbxproj文件填充正确的值,即使自动选择功能应该选择与我手动选择的完全相同的配置文件。

我需要一杯啤酒......

在尝试了此处列出的所有其他修复程序之后,我们使用Apple记录了TSI。 遵循技术说明TN2250中的所有步骤,我们的问题是由于密封资源丢失或无效而引起的。 在我们的例子中,它是._.DS_Store

......” 被称为Apple Double文件,是将Xcode Project文件夹*解压缩*复制到不正确支持HFS +的'资源分支'(用于代码签名)的文件系统上或从其返回的结果。 这些额外的“...... 文件结果并导致代码签名验证失败。

要从Xcode项目文件夹中清除有问题的Apple Double文件,请在Xcode项目的文件夹上运行dot_clean命令,执行干净的构建,然后重新归档并重新尝试提交。

dot_clean /the/path/to/xcode/project

注意:您只需将项目文件夹拖到终端即可自动填充路径

运行该命令时没有消息,但项目构建可能会在您下次构建时显示有关该文件的警告。 您可以忽略这一点,应用程序将验证并成功提交。

我遇到了类似的问题,但我没有使用entitlements.plist。 然而,在上传失败后,我检查了我的info.plist并发现了一些东西。 我的CFBundleIconFiles数组有一个空条目。 我删除了并重新提交,最终被接受了!

说真的,Apple暴露那种验证错误有多难?

编辑:它不是立即显示CFBundleIconFiles的位置,因为它们使用不同的名称。 在项目信息视图中,单击Ctl并选择“显示原始键/值”,然后您将看到对CFBundleWhatever的引用。 在这个编辑器的情况下,他试图使用一个不存在的icon = 72-@2x.png文件。

通过清理myProject.xcodeproj文件(右键单击,打开包)解决了这个问题,包中包含来自co-developer的文件,删除后这些问题解决了

对我来说,解决方案是在Apple Developer Provisioning Portal创建分发认证。

我收到了一个无效的二进制文件,如果应用程序没有使用远程推送通知,但是我留下了用于注册push的代码和用于注册/接收远程通知的回调代理未注释,即使代码没有被使用。

这是最近的。 我上周的最后一次提交很好。 本周,它返回无效的二进制文件。 幸运的是,有一封电子邮件可以解释错误。

对于它的价值,我想补充一下为我解决这个问题的原因。 我曾有一个 ? (问号)在我的应用标题中导致错误。

对我来说,问题是通过使用非隔行扫描选项重新保存PNG图像来解决的。 在以前的版本中,允许隔行扫描的png,但是知道这些图像会导致无效的二进制文件。

我的苹果消息:损坏的图标文件 - 图标文件iconGQ@2x.png似乎已损坏。 您的图标不能是隔行扫描的PNG文件。

您可以使用终端中的命令“file”查看PNG是否隔行扫描:Eva-Madrazos-MacBook-Pro-2:GQ 7 integracion ads Eva $ file * .png Default.png:PNG图像数据,320 x 480, 8位/彩色RGB,非隔行扫描

祝你好运,伊娃

我想指出向Apple发送电子邮件并要求他们检查日志的可能性。 在做了大量的事情之后,我做到了这一点。 在将近四周之后,有必要提醒他们,但最后他们回答并指出问题的确切位置。

我的问题是我之前尝试过其他应用程序图标,旧图像的引用仍保留在“CFBundleIcons”中。 我使用拖放功能来设置图标,但我没有注意到在添加新引用之前旧内容没有完全清除。

要查看错误的引用,必须展开箭头以查看plist文件中的每个子元素。 一个提示是右键单击文件并选择查看原始内容的选项。 这样你就不需要扩展任何东西了。

我尝试了所有其他提议的解决方案,但没有任何帮

我最终创建了一个新的Xcode项目 ,并将我的所有代码和资源复制到其中。 这样做了,我的应用程序被放入了审核队列。

我还可以推荐关于代码签名的Apples技术说明,以便进行调试/验证。

uuid是不被允许的。 我通过删除所有[[UIDevice currentDevice] uniqueIdentifier]来修复它;

截至 2013 年 5 月 1 日,Apple 更新了他们的 iOS 人机界面指南,因此如果您想上传新的应用程序或更新,它必须是 iphone 5(4 英寸)友好的 - 这意味着它不应该是在更大的应用程序上运行的 3.5 英寸应用程序屏幕。

来自苹果:

亲爱的开发者,

我们发现您最近的“-------------”交货有一个或多个问题。 要处理您的交货,必须更正以下问题:

iPhone 5 优化要求 - 您的二进制文件未针对 iPhone 5 进行优化。自 5 月 1 日起,提交的所有新 iPhone 应用程序和应用程序更新都必须支持 iPhone 5 上的 4 英寸显示屏。所有应用程序必须包含适当大小的启动图像。 查看 iOS 人机界面指南,了解有关 iPhone 5 支持的更多信息。

更正这些问题后,请转到“版本详细信息”页面并单击“准备上传二进制文件”。 继续提交过程,直到应用程序状态为“等待上传”。 然后,您可以交付更正后的二进制文件。

问候,

应用商店团队

还有一种情况是二进制文件将被视为无效。 从 2015 年 2 月 1 日起,新的 iOS 应用程序需要支持 64 位架构。 这是来自苹果的电子邮件:

亲爱的开发者,

我们发现您最近的“首页 - 招聘”交付有一个或多个问题。 要处理您的交货,必须更正以下问题:

缺少 64 位支持 - 从 2015 年 2 月 1 日开始,提交到 App Store 的新 iOS 应用程序必须包含 64 位支持并使用 iOS 8 SDK 构建。 从 2015 年 6 月 1 日开始,应用更新也需要遵循相同的要求。 要在您的项目中启用 64 位,我们建议使用“标准架构”的默认 Xcode 构建设置来构建具有 32 位和 64 位代码的单个二进制文件。

更正这些问题后,您就可以重新交付更正后的二进制文件。

问候,

应用商店团队

今天刚遇到这个问题,但这里的答案没有帮助。 我终于找到了问题所在。

确保使用下拉菜单:项目>编辑活动目标项目名称”将代码签名更改为分发 - 我在组和文件窗格中选择项目并使用显示项目信息而不是目标信息的信息按钮 - 非常令人困惑! 只有当我在项目中关闭代码签名并构建时才意识到它仍然想要代码签名!

我认为这就是为什么在 Eddie 的帖子中他必须在 project.pbxproj 级别更改它

同样在第 1 步的原始帖子中: 1. 在 Xcode 中,选择 Device|Release 目标当然应该是 Device|Distribution 目标? (假设此复制版本并根据供应门户中的 Apple 说明将其重命名为 Distribution)

就我而言,它是包含在项目二进制文件中的 TestFlight SDK。

我从不同的旧项目源(包括 testflight)创建了一个新项目,但由于该项目是一个具有新 ID 的新项目,因此此处不再允许使用 TestFlight SDK。

我删除了它,然后存档并再次上传。 这次没有“无效的二进制”错误。

我的两分钱:

下载最新版本的Application Loader。 我刚刚更新,现在得到一个不同的错误消息。

我刚刚经历过这个麻烦(再次),但这次我发现我的发行版个人资料状态为“无效”。 如果您认为其他一切都正确,请仔细检查门户中的状态并续订/重新下载任何未处于活动状态的内容。

我在应用程序上传后收到了无效二进制文件,没有关于失败原因的电子邮件跟进。 我试着一次做几件事,我不确定以下哪一个实际修复了它:

  1. 重启Macbook Pro
  2. 将我的项目的源代码从NTFS驱动器移动到HFS +驱动器并重新编译。

我有这个问题和4.3 GM SDK。 我们的其中一个应用程序无法通过上传收到它。 它原来是一个配置文件问题。 我重新生成了应用程序商店配置文件,它工作正常。

我的解决方案涉及创建新的App ID。 我不确定为什么修复它,但我怀疑它可能是不匹配的Bundle Identifiers - 创建新的App ID迫使我确保我的应用程序和iTunes期待同样的事情。

另一种方案:

对我来说,只需在“代码签名”下设置“发布”证书就可以修复它。 他们最初被设置为“不要编码标志”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM