xcode 错误 itms-90035
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/29859996/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Error itms-90035
提问by JSA986
App passes validation
应用通过验证
On upload getting error Error itms-90035
上传时出现错误 Error itms-90035
"Invalid Signature. Code object is not signed at all. The binary at path [myApp.app/RNGridMenu.o] contains an invalid signature. Make sure you have signed your application with a distribution certificate, not an ad hoc..."
“无效签名。代码对象根本没有签名。路径 [myApp.app/RNGridMenu.o] 中的二进制文件包含无效签名。确保您已使用分发证书而不是临时证书对您的应用程序进行签名......”
myApp.app/RNGridMenu.o
is not anywhere in the project. RNGridMenu.h
& RNGridMenu.m
only. RNGridMenu
has been in the project for over a year now, and even uploaded fine 3 days ago
myApp.app/RNGridMenu.o
不在项目中的任何地方。 RNGridMenu.h
&RNGridMenu.m
只。RNGridMenu
已经在项目中一年多了,甚至在 3 天前上传得很好
I have checked
我检查过
Error ITMS-90035 - Xcode 6.3.1 [Invalid Signature]
错误 ITMS-90035 - Xcode 6.3.1 [无效签名]
XCode Error itms-90035 - Invalid signature?
All of which have the same error code but dont address my issue
所有这些都有相同的错误代码,但没有解决我的问题
回答by madmanick
I tried out pretty much every solution on SO when debugging this for an app I am submitting, and realized you can get this error in many ways. Here's a summary of what is usually wrong and how to fix it.
在为我提交的应用程序调试此解决方案时,我尝试了几乎所有关于 SO 的解决方案,并意识到您可以通过多种方式获得此错误。以下是对通常错误以及解决方法的总结。
1) You didn't select a Provisioning Profile for Distribution with a valid certificate for your PROJECT and TARGETS. Make sure you've selected a valid provisioning profile in your Build Settings for the "Release" option, and verify at developer.apple.com that your Provisioning Profile is still valid. (here: https://developer.apple.com/account/ios/profile/profileList.action)
1) 您没有为您的项目和目标选择具有有效证书的用于分发的配置文件。确保您在构建设置中为“发布”选项选择了有效的配置文件,并在 developer.apple.com 上验证您的配置文件仍然有效。(这里:https: //developer.apple.com/account/ios/profile/profileList.action)
2) Your Code Signing Identity in Build Settings is a valid one for Distribution. Make sure you've selected one that is valid and it is selected for the "Release" option.
2) 您在构建设置中的代码签名身份对于分发是有效的。确保您选择了一个有效的并且它被选中用于“发布”选项。
3) Your scheme (can be found via Product -> Scheme -> Edit Scheme) for your execution type needs to be "Release" for your Build Configuration. If you are archiving your app for App Store submission, make sure you have "Release" set for the Archive build type in this window.
3) 您的执行类型的方案(可以通过产品 -> 方案 -> 编辑方案找到)对于您的构建配置需要为“发布”。如果您正在为 App Store 提交存档您的应用程序,请确保您在此窗口中为存档构建类型设置了“发布”。
4) You have multiple distribution certificates in your keychain access. Try deleting the duplicate certificates from your keychain and then try to submit again.
4) 您的钥匙串访问中有多个分发证书。尝试从您的钥匙串中删除重复的证书,然后再次尝试提交。
5) One of the most evil ones.... you have a line of code that begins with "#!" at the top of one of your files, usually a ".sh" or ".py". Recently, Apple seems to be requiring these files to be code signed. Feels like a bug on their side, but for your submission just remove this line! This can happen too if you have ".sh" files besides the build script in your Pod directory.
5) 最邪恶的一个……你有一行以“#!”开头的代码 在其中一个文件的顶部,通常是“.sh”或“.py”。最近,Apple 似乎要求对这些文件进行代码签名。感觉就像他们这边的一个错误,但是对于您的提交,只需删除这一行!如果您的 Pod 目录中除了构建脚本之外还有“.sh”文件,也会发生这种情况。
6) You have duplicate CODE_SIGN_IDENTITY lines in your project.pbxproj file. They might look like this...
6) 您的 project.pbxproj 文件中有重复的 CODE_SIGN_IDENTITY 行。他们可能看起来像这样......
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone 开发者"; CODE_SIGN_IDENTITY = "iPhone 分发";
Delete one of these lines and your file should be able to build correctly again.
删除这些行之一,您的文件应该能够再次正确构建。
7) Refresh the certificates and provisioning profiles in Xcode from your developer account. Xcode -> Preferences ... select your account -> View Details -> Hit the refresh button.
7) 从您的开发者帐户刷新 Xcode 中的证书和配置文件。Xcode -> Preferences ... 选择您的帐户 -> 查看详情 -> 点击刷新按钮。
8) The kitchen sink approach: create a new project and load your settings from scratch. Recreate your certificates and provisioning profiles. Never fun, but this has worked for me in a few hopeless situations.
8)厨房水槽方法:创建一个新项目并从头开始加载您的设置。重新创建您的证书和配置文件。从来没有乐趣,但这在一些绝望的情况下对我有用。
Good luck!
祝你好运!
回答by bk138
It seems XCode starting with Version 10.0 (10A255) does not properly sign apps with PRODUCT_NAME
containing umlauts like ü
(and maybe other non-ASCII chars - but we haven't tested this). This is on macOS 10.13.6 (17G65) with APFS, which mightbe the reason as well.
似乎从版本 10.0 (10A255) 开始的 XCode 没有正确签署PRODUCT_NAME
包含变音符号ü
(可能还有其他非 ASCII 字符 - 但我们还没有测试过)的应用程序。这是在带有 APFS 的 macOS 10.13.6 (17G65) 上,这也可能是原因。
It didwork with the same macOS version with APFS with an earlier XCode version just fine, so we suspect it's XCode though.
它确实适用于带有 APFS 的相同 macOS 版本和早期的 XCode 版本,但我们怀疑它是 XCode。
Anyway, the fix is to set PRODUCT_NAME
to a string without umlauts...
无论如何,修复方法是设置PRODUCT_NAME
为没有变音符号的字符串......
回答by KarenAnne
Tried & tested solution:
久经考验的解决方案:
- Copy both
RNGrid.m
&RNGrid.h
to another location - Remove both your
RNGrid.m
&RNGrid.h
and move to trash - Clean and build
- Add both
RNGrid.m
&RNGrid.h
files back to the project and Copy it to the destination folder - Clean and build
- 将
RNGrid.m
&复制RNGrid.h
到另一个位置 - 删除您的
RNGrid.m
&RNGrid.h
并移至垃圾箱 - 清洁和构建
- 将两个
RNGrid.m
&RNGrid.h
文件添加回项目并将其复制到目标文件夹 - 清洁和构建
This solution works for me which is also answered here: Why does one .o file in my project has no Provisioning Profile?
这个解决方案对我有用,这里也有答案:为什么我的项目中的一个 .o 文件没有配置文件?
回答by badger_cl
I had the same problem:
我有同样的问题:
My project is a client which access APIs using a non-standard Auth protocol. I implemented a library for this protocol as a separated project and imported it as a subproject in the client's one. Both projects used AFNetworking as HTTP Client. Also the client and the library uses other non-shared external libs.
我的项目是使用非标准身份验证协议访问 API 的客户端。我为这个协议实现了一个库作为一个单独的项目,并将它作为客户项目中的一个子项目导入。这两个项目都使用 AFNetworking 作为 HTTP 客户端。客户端和库也使用其他非共享的外部库。
This schema worked well until Xcode 6.3: all review submissions were accepted in all the stages. After updating to XCode 6.3.1 my submissions to iTunes where rejected because of unsigned .o files of the AFNetworking lib. After iterating over all the answers without success, I decided to remove the subproject. I moved all the library files to the client project and removed the redundant AFNetworking files. After doing this, the app was approved at iTunes Connect :)
这种模式在 Xcode 6.3 之前一直运行良好:所有阶段的所有提交都被接受。更新到 XCode 6.3.1 后,我提交给 iTunes 的内容因为 AFNetworking 库的未签名 .o 文件而被拒绝。在迭代所有答案但没有成功后,我决定删除子项目。我将所有库文件移动到客户端项目并删除了多余的 AFNetworking 文件。完成此操作后,该应用程序已在 iTunes Connect 上获得批准 :)
It worked as a temporal solution. Probably I'll need to use CocoaPods or Carthage to be able to separate the app and the lib again.
它起到了临时解决方案的作用。可能我需要使用 CocoaPods 或 Carthage 才能再次分离应用程序和库。
回答by dadederk
Check if you have the RNGridMenu.m or .h files into the "Copy Bundle Resources" into the "Build Phases" of your target
检查您是否将 RNGridMenu.m 或 .h 文件放入目标的“Copy Bundle Resources”中
回答by Daniel Tovesson
For me the problem was that I had a asset with a non-ASCII character in the filename.
对我来说,问题是我的文件名中有一个非 ASCII 字符的资产。
回答by Diego Salas
I had the same problem, it was related to asset with a non-ASCII character in the filename as in other answer.
我遇到了同样的问题,它与其他答案中文件名中包含非 ASCII 字符的资产有关。
I used this command to find the files that were causing the problem:
我使用此命令查找导致问题的文件:
LC_ALL=C find . -name '*[! -~]*'
I found it in another answer in this post.
我在这篇文章的另一个答案中找到了它。
Hope this helps someone.
希望这可以帮助某人。
回答by frankhermes
I had this problem in a Unity app that I was resigning from a Developer version to an App Store version. I resigned the app before I resigned the frameworks in the app, thus invalidating the signature of the main app file.
我在一个 Unity 应用程序中遇到了这个问题,我从开发人员版本辞职到 App Store 版本。我在退出应用程序中的框架之前退出了应用程序,从而使主应用程序文件的签名无效。
This was easily solved (but not easily found) by resigning the frameworks before the app itself.
通过在应用程序本身之前放弃框架,这很容易解决(但不容易找到)。
Shell script example for resigning an unzipped .ipa file:
用于对解压缩的 .ipa 文件进行签名的 Shell 脚本示例:
/usr/bin/codesign -f -s "<CERTIFICATE NAME>" Payload/myApp.app/Frameworks/*
/usr/bin/codesign -f -s "<CERTIFICATE NAME>" --entitlements entitlements.plist Payload/myApp.app
回答by Badal Shah
I have tried all the solution which described on Stackoverflow. I have also tried also all possibilities as said by thebhanmanin first answer but didn't solved problem.
我已经尝试了 Stackoverflow 上描述的所有解决方案。我也尝试了thebhanman在第一个答案中所说的所有可能性,但没有解决问题。
Solution worked for me :- [Upload with Application Loader]
解决方案对我有用:- [使用应用程序加载器上传]
Don't make .ipawith doing extra process like with Terminalor Itunesetc. make .ipa with xcodein exportoption and it worked for me.
不要的.ipa用做额外的过程就像终端或iTunes的等在Xcode化妆的.ipa在出口选项,它对我来说有效。
Step 1 :-Go to ProductArchive Appin xcode
第 1 步:-在 xcode 中转到Product Archive App
Step 2 :-select export option
第 2 步:-选择导出选项
Step 3 :-Select 1st option //-> Save for iosappstore deployment
第 3 步:-选择第一个选项 //-> 保存以用于 iosappstore 部署
Step 4 :-Xcode will make .ipafile of your application with date and time folder.
第 4 步:-Xcode 将制作带有日期和时间文件夹的应用程序的.ipa文件。
Note :-First Validate your app. If validation successfully done then try this with Application Loader.
注意:-首先验证您的应用程序。如果验证成功完成,请使用Application Loader尝试此操作。
I hope this will helpful for some one in future. because i waste 2 days to solve this problem.
我希望这对将来的某个人有所帮助。因为我浪费了 2 天时间来解决这个问题。
回答by Klynk
I just had this problem while working on a bindings project for Xamarin.
我在为 Xamarin 开发绑定项目时遇到了这个问题。
The library would not bind, so I made a proxy framework which invokes the framework I needed.
该库不会绑定,所以我创建了一个代理框架来调用我需要的框架。
It was the self-made proxy framework that were getting the ITMS-90035 error message.
收到 ITMS-90035 错误消息的是自制代理框架。
After a few hours of fiddeling around I discovered a mismatch between the framework in the IPA file, and the actual content of my proxy framework.
经过几个小时的折腾,我发现 IPA 文件中的框架与我的代理框架的实际内容不匹配。
After countless cleaning/rebuilding of the project, I manged to fix the issue by deleting the Xamarin cache on the Mac.
经过无数次清理/重建项目后,我设法通过删除 Mac 上的 Xamarin 缓存来解决该问题。
It is located at ~/Library/Caches/Xamarin.
它位于~/Library/Caches/Xamarin。
After I deleted the Xamarin folder, I re-built my bindings project. I were then able to upload my app to TestFlight/AppStore.
删除 Xamarin 文件夹后,我重新构建了绑定项目。然后我就可以将我的应用程序上传到 TestFlight/AppStore。