Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 签名无效-代码对象根本没有签名_Ios_Objective C_Xcode_App Store Connect - Fatal编程技术网

Ios 签名无效-代码对象根本没有签名

Ios 签名无效-代码对象根本没有签名,ios,objective-c,xcode,app-store-connect,Ios,Objective C,Xcode,App Store Connect,我可以通过Xcode 6.3.2提交我的应用程序。验证和分析完全通过。一旦它成功提交到应用商店,尽管我收到苹果的电子邮件: “亲爱的开发商, 我们发现您最近交付的“应用程序”存在一个或多个问题。若要处理您的交付,必须更正以下问题: 签名无效-未对代码对象进行签名。请确保已使用分发证书而不是临时证书或开发证书对应用程序进行签名。验证Xcode中的代码签名设置在目标级别是否正确(这将覆盖项目级别的任何值)。此外,请确保您正在上载的捆绑包是使用Xcode中的发布目标而不是模拟器目标生成的。如果您确定您

我可以通过Xcode 6.3.2提交我的应用程序。验证和分析完全通过。一旦它成功提交到应用商店,尽管我收到苹果的电子邮件:

“亲爱的开发商, 我们发现您最近交付的“应用程序”存在一个或多个问题。若要处理您的交付,必须更正以下问题: 签名无效-未对代码对象进行签名。请确保已使用分发证书而不是临时证书或开发证书对应用程序进行签名。验证Xcode中的代码签名设置在目标级别是否正确(这将覆盖项目级别的任何值)。此外,请确保您正在上载的捆绑包是使用Xcode中的发布目标而不是模拟器目标生成的。如果您确定您的代码签名设置正确,请选择Xcode中的“全部清除”,删除查找程序中的“生成”目录,然后重新生成您的发布目标。有关详细信息,请参阅 一旦纠正了这些问题,您就可以重新提交已纠正的二进制文件。”

我尝试重新下载分发证书,重新生成分发配置文件,在代码签名“其他代码签名标志”中添加“-deep”。我甚至检查了包名称等,所有内容都是字母数字。我可以在5月22日提交罚款,现在是6月3日,一切都中断了

没有任何意义,任何帮助都将不胜感激

更新和解决方案:

虽然我不能很好地解释为什么在上周突然发生了这种情况,但今天早上我终于找到了解决办法

我从一个新项目开始,提交到应用商店,除了标识符、正确的版本号和内部版本号外,什么都没有,处理得很好。在那之后,在收到“无效二进制”电子邮件之前,我开始插入任何不是我自己代码的资产。我把它缩小到了曲棍球应用程序SDK(嵌入式框架),它导致了这个问题,甚至不再被使用,所以我把它从项目中删除了(问题解决了)。令人不安的是,在验证或提交过程中,我这方面没有任何失败,根据github的说法,这个目录和内容一年内没有改变,这让我相信苹果的服务器端发生了变化

我确实在谷歌上看到很多帖子,说框架需要签名等等,当使用Xcode 6和iOS 8时,它似乎是标准,这就是为什么我认为它可能是类似于这些东西的原因

我不确定这有多大帮助,因为我是为iOS构建的,这篇文章是针对Mac的,但HockeyApp解释说,为了分发到应用商店,您需要在此处使用自己的身份签署框架:


如果有人对此有更多的技术说明,或者为什么会突然改变,我很想更好地理解这一点。

我联系了HockeyApp,他们建议不要将SDK添加到应用包中。所以我导航到Target->Build Phases->Copy Bundle Resources并从那里删除了HockeySDKResources.Bundle。iTunes Connect接受了我的二进制文件

我检查了很多地方,似乎有一些地方现在被iTunes Connect拒绝了。解决方案通常是从目标->构建阶段->复制捆绑资源(正如@azizus提到的)中删除有问题的资源。不幸的是,苹果没有告诉你是什么文件导致了你的版本出现这个问题,所以你必须自己去寻找。以下是我发现的一些可以做到这一点的项目:

  • Shell脚本(查找.sh文件,尽管它们可能有不同的 扩展)
  • 此外,当文件被列为可执行文件时,请注意这些文件 不应该。这可能是寻找shell脚本的好地方 你可能错过了
  • 框架(框架捆绑包,甚至.a或.o文件-您可以 不需要它们,因为它们将被编译成可执行二进制文件)
  • DocSets(我不知道为什么,但我发现HockeyappSDK 包括一个DocSet捆绑包,这是我经验中的原因)
  • 有时,由于一些奇怪的权利,这种情况也可能发生 问题您拥有的权利可能与中的应用程序不匹配 资源调配门户
  • 注意应用程序名或文件名中的无效字符(如 通配符)
这是一个相当广泛的列表,我在搜索中帮助建立了一个存档,然后使用finder在存档中显示.app的内容,按文件类型排序。奇怪的是,这些文件实际上存在于_code签名/code资源文件中


我自己关于为什么会发生这种情况的理论是,由于扩展和WatchKit应用程序,苹果做出了一些改变(或正在做出一些改变)。本质上,您在打包的IPA(电话应用程序、分机、手表应用程序)中包含了两个二进制文件。他们可能想确保你没有包括其他可能被执行的东西。不幸的是,对于大多数人来说,错误消息太模糊(实际上它是不正确的)。

在我的例子中,它是一个重复的info.plist,没有使用。(找出问题并不容易)。我几乎删除了我项目中的所有文件,直到删除了这个文件,然后。。清除每个目标中的代码符号资源规则路径的值后,问题就解决了。

这花了我3天的时间进行调试

最后,我通过迦太基导入了一个外部框架(我们称之为X)。X也通过迦太基导入了自己的依赖项。为了链接这些框架,它在构建设置中有一个名为
Framework Search path
的路径设置为框架的位置。出于某种原因,正是这个框架中的这个标志导致了问题中指定的问题。我最终用Git子模块导入了X的依赖项,这样我就不必设置
框架搜索路径