24
votes

App passes validation

On upload getting error 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 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

I have checked

Error ITMS-90035 - Xcode 6.3.1 [Invalid Signature]

Error itms-90035 - Xcode

XCode Error itms-90035 - Invalid signature?

All of which have the same error code but dont address my issue

enter image description here

11
Check this link I have answered same kind of query there stackoverflow.com/questions/29906564/…Asheesh

11 Answers

63
votes

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.

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)

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.

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.

4) You have multiple distribution certificates in your keychain access. Try deleting the duplicate certificates from your keychain and then try to submit again.

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.

6) You have duplicate CODE_SIGN_IDENTITY lines in your project.pbxproj file. They might look like this...

"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Distribution";

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.

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.

Good luck!

4
votes

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 might be the reason as well.

It did work with the same macOS version with APFS with an earlier XCode version just fine, so we suspect it's XCode though.

Anyway, the fix is to set PRODUCT_NAME to a string without umlauts...

2
votes

Tried & tested solution:

  1. Copy both RNGrid.m & RNGrid.h to another location
  2. Remove both your RNGrid.m & RNGrid.h and move to trash
  3. Clean and build
  4. Add both RNGrid.m & RNGrid.h files back to the project and Copy it to the destination folder
  5. Clean and build

This solution works for me which is also answered here: Why does one .o file in my project has no Provisioning Profile?

1
votes

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.

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 :)

Subproject to project

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.

1
votes

For me the problem was that I had a asset with a non-ASCII character in the filename.

0
votes

Check if you have the RNGridMenu.m or .h files into the "Copy Bundle Resources" into the "Build Phases" of your target

0
votes

I just had this problem while working on a bindings project for 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.

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.

After countless cleaning/rebuilding of the project, I manged to fix the issue by deleting the Xamarin cache on the Mac.

It is located at ~/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.

0
votes

I had the same problem, it was related to asset with a non-ASCII character in the filename as in other answer.

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.

0
votes

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.

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:

/usr/bin/codesign -f -s "<CERTIFICATE NAME>" Payload/myApp.app/Frameworks/* 
/usr/bin/codesign -f -s "<CERTIFICATE NAME>" --entitlements entitlements.plist Payload/myApp.app
0
votes

Edit:- As said by tp1033 in comment . Application loader is now deprecated and you will not find it in xcode. But you can use Transporter Utility now to upload your .ipa file.

enter image description here

=================================================

I have tried all the solution which described on Stackoverflow. I have also tried also all possibilities as said by thebhanman in first answer but didn't solved problem.

Solution worked for me :- [Upload with Application Loader]

Don't make .ipa with doing extra process like with Terminal or Itunes etc. make .ipa with xcode in export option and it worked for me.

Step 1 :- Go to Product Archive App in xcode

enter image description here

Step 2 :- select export option

enter image description here

Step 3 :- Select 1st option //-> Save for iosappstore deployment

enter image description here

Step 4 :- Xcode will make .ipa file of your application with date and time folder.

enter image description here

enter image description here

Note :- First Validate your app. If validation successfully done then try this with Application Loader.

enter image description here

I hope this will helpful for some one in future. because i waste 2 days to solve this problem.

0
votes

If you are on React-Native 0.63.3 check the build system.

When I had this problem my Workspace was configured with the New Build System try to use the Legacy Build System.