错误 itms-90035 - Xcode

82
我开发了一个 Phonegap 应用程序,它在 iPhone 上运行得非常好。现在,我想将该应用程序提交到 appstore。以下是我提交应用程序的步骤:
  1. 打开 Xcode 并存档项目
  2. 点击验证(成功)
  3. 点击提交到 App Store(这是我遇到以下错误的地方)
直到昨晚,我甚至都没有收到这个错误,但今天早上,我存档了项目,就出现了这个错误。不确定问题出在哪里。
这是最终阶段,阻止我提交该应用程序并且非常令人沮丧,我尝试在 stackoverflow 论坛上搜索相同的错误代码,但找不到与我的错误代码完全相同的帖子,这非常奇怪。
请帮助 :)

1
你确定你的代码签名设置正确吗? - Anil Varghese
2
Nikhil,我也从今天早上开始遇到了同样的错误。我刚试图“验证”一个已经成功通过审核并上传的旧版本应用程序。除了我预期的错误(应用商店中已存在该版本,我的应用程序版本因发布而关闭修改等)之外,我一直收到ITMS-90035错误。我还验证了我的证书没有被吊销(来自苹果开发者中心)。我会在今天稍后更新我的发现,并监视这个帖子以听取你的意见。谢谢 :) - Nili
1
我也是,昨天我提交了许多构建版本而没有错误。代码和设置都没有改变。 - VinZen
这里也是苹果的 bug 吗? - ValentiGoClimb
3
Nikhil的建议是将.sh文件从我的目标中删除,这样问题就解决了。 - Nili
显示剩余9条评论
16个回答

79

我曾经遇到过同样的问题,结果发现我的某个通过bower安装的库包含了一个不必要的.sh文件。我刚刚删除了这个文件,一切都成功上传了。

似乎苹果现在要求开发者在其应用中签名.sh文件。但Cordova/Phonegap应用程序不需要这些文件,所以您可以放心删除它们。


3
这是唯一正确的答案。 顺便说一下,您不需要删除文件,只需将其从目标中排除即可。 - Inferis
1
我的项目中只有一个.sh文件,位于platforms > ios > cordova > lib > copy-www-build-step.sh。我应该删除它吗?还是只有当有两个时才需要删除?谢谢! - shan
5
谢谢!这是正确的答案。在我的情况下,是Crittercism dsym_upload.sh文件被CocoaPods复制到我的捆绑包中,而CocoaPods在我们公司已经成为了一个禁忌词。 - toofah
6
我已经通过CocoaPods包含了Crittercism,并且它有一个dsym_upload.sh脚本,这也会导致出现错误。目前,我只是在Pods-resources.sh文件中注释掉了这行代码:install_resource "CrittercismSDK/CrittercismSDK/dsym_upload.sh"。 - sasha_nec
在我的情况下,它是一个 .sh 文件,位于 karma JavaScript 测试运行器内部。 - Steven P
显示剩余3条评论

9

我在升级到最新版本的Xcode(6.3.1)后遇到了这个问题。不仅是.sh文件,我还在使用node脚本时遇到了这些错误。似乎任何以#!/usr/bin/env开头的文件都会导致这些错误。我曾经通过在随机文件中添加#!来引发任意错误。

暂时从文件顶部删除#!/usr/bin/env指令可以解决问题,但你需要一个更好的长期解决方案 :)

你将不得不针对每个脚本文件逐个处理,找出在你的项目中有意义的方法。

如上所述,这可能是苹果方面的临时问题,与Xcode版本无关。


8
编辑:我成功避免了这个错误,方法是从我的目标文件中删除项目的.sh文件
到目前为止,我会说这是苹果方面的一个错误。
昨天我提交了一款应用程序,没有任何问题,今天被拒绝了,以便于提交稍微修改后的二进制文件,但和你一样,我现在遇到了同样的错误。 我认为这可能与Xcode6.3.1有关,因为我今天早上安装了它,所以我重新安装了Xcode 6.3.0,但错误仍然存在。 然后我仔细检查了一切:
证书 Provisioning Profiles iTunes连接应用程序状态
但到目前为止还没有成功。
事实上,“itms-90035”谷歌搜索只返回了一个结果,这使我认为可能是一些临时事件。

我做了你所做的一切,我完全同意你的观点。完全赞同,祈祷他们能尽快解决这个问题。 - Nihilarian

4
在我的案例中,我得到了这个错误是因为应用程序显示名称中有一个特殊字符。令人费解的是为什么不能生成适当的错误消息。

3

这与包含的.sh文件有关,确实不太明显。


在我们的情况下,它是AudioKit库。README说:

在大多数情况下,无论您如何安装框架,当构建iOS或tvOS时,您都需要向项目的目标添加运行阶段,并使用以下脚本:

"$BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH/AudioKit.framework/fix-framework.sh"


有时您在目标的build phases中看不到它们。一些第三方库也会导致此错误,因为它们也涉及.sh文件

查看您的第三方库/podsREADME文件以获取更多信息。


3

正如其他人所说,问题似乎是因为在应用程序捆绑包中包含名为“upload-dsym.sh”的文件。以下是我采取的步骤以解决此错误: 1. 在Xcode中进入项目设置并选择“Target”应用程序图标。 2. 选择“Build Phases”选项卡。 3. 点击“Copy Bundle Resources”。 4. 查找正在复制的名为“upload-dsym.sh”的文件。 5. 删除该文件,然后上传过程顺利完成。


本答案中描述的过程是从已签名应用程序中删除*.sh文件的详细路径。在我的情况下,它是由Worklight环境生成的buildtime.sh。由于这是一个相对较新的问题,迄今为止,似乎苹果确实在提交过程中改变了某些东西... - roy650

2
这个问题已经在CrittercismSDK CocoaPods 5.2.0中得到解决:https://github.com/CocoaPods/Specs/blob/master/Specs/CrittercismSDK/5.2.0/CrittercismSDK.podspec.json。您可以升级到sdk 5.2.0或者删除该文件,并从Pods-resources.sh文件中删除以下行:
    if [[ "$CONFIGURATION" == "Debug" ]]; then 
install_resource "CrittercismSDK/CrittercismSDK/dsym_upload.sh" 
fi 
if [[ "$CONFIGURATION" == "Release" ]]; then 
install_resource "CrittercismSDK/CrittercismSDK/dsym_upload.sh" 
fi 

谢谢


2

我有同样的问题。然后我删除了.sh文件。再次提交我的应用程序。成功了!


1
在平台目录中运行以下命令:
grep -r '#!/usr/' *

这将显示所有可执行文件,通常包括 .sh 和 node 文件。

从结果中找到在您的项目文件夹中的文件(例如,我的项目文件夹是 platforms/ios/www/*),并删除它们,保留其余文件。


1
今天我们遇到了一个非常相似的问题,并解决了它。

错误 ITMS-90035:“无效签名。缺少或无效的密封资源。路径为 [MyNiftyApp.app/MyNiftyApp] 的二进制文件包含无效的签名。[...]”

我们正在使用 Jenkins-CI 进行构建流程,与 xcode-plugin 一起使用。当我查看 Jenkins 构建日志时,发现了这个错误信息:
file added: /Users/Shared/Jenkins/Home/workspace/RELEASE_STAGE_my-nifty-app/build/MyNiftyApp.app/MyNiftyApp.app
file modified: /Users/Shared/Jenkins/Home/workspace/RELEASE_STAGE_my-nifty-app/build/MyNiftyApp.app/Assets.car
]
Codesign check fails : /Users/Shared/Jenkins/Home/workspace/RELEASE_STAGE_my-nifty-app/build/MyNiftyApp.app: a sealed resource is missing or invalid

在寻找Assets.car后,我找到了这篇文章:https://issues.jenkins-ci.org/browse/JENKINS-21253。用户遇到了类似的问题,通过禁用以下插件选项“XCode -> General Build Settings -> Generate Archive?”解决了问题(之前为true,现在为false)。
至少这在我们这边解决了问题 - 也许它会引导您走向正确的方向。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接