Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

App submission failed - 1+ corrupted binaries/non-public API usage and no additional details

I’ve been submitting my app to the App Store for test flight and after build 11, I’ve been getting failures via email from Apple:

Non-public API usage: The app contains one or more corrupted binaries. Rebuild the app and resubmit

I get no additional details from them. No method names or classes or anything.

I’ve submitted build 15, for example, which is literally an exact copy of build 11 (which went through!) with a version number bump and build 15 failed.

I believe this is an Apple error though I have no way to prove it other than the paragraph above. Builds 1-11 worked fine and were able to be uploaded and distributed.

I’m using Xcode 9.1 and 9.2, both give the same error.

I’ve also contacted Apple via DTS and they said they can’t help me.

What do I do now?

like image 413
Zack Shapiro Avatar asked Jan 27 '18 16:01

Zack Shapiro


4 Answers

I had this exact problem. I was using CommonCrypto as a 'fake' framework. I removed that, and switched to the method described by the accepted answer in this thread, and iTunesConnect accepted my build.

Getting a Swift 4 conversion warning by XCode or having "CommonCryptoModule" showing up in cmd output when using pod update seems to be a strong indicator whether you are affected by this issue or not.

like image 149
Ben Gottlieb Avatar answered Sep 18 '22 15:09

Ben Gottlieb


Our projects that didn't have bitcode enabled started failing on Friday 2018-01-26. Setting Enable Bitcode to Yes in the Build Settings of those projects solved the issue.

like image 35
Roy Avatar answered Sep 21 '22 15:09

Roy


After a LOT of investigations on this part we finally found the problem for this issue: It seems like Apple gives this error for applications that suport both 32 and 64 bits.

Apple gave this reminder for Mac Appstore, but it seems that iOS applications are affected as well.

So a solution for this is to support bitcode OR to drop support for 32 bit devices by removing support for ARMV7 and ARMV7S or bellow from Valid Architectures from build settings. This will mean your application will work only on iPhone 5S and above. I hope this helps someone. Thank you!

like image 45
Andrei Neag Avatar answered Sep 22 '22 15:09

Andrei Neag


Had the same problem since Saturday. Took long trial and error in our case, turning on Bitcode didn't work. The following part of my podfile was the reason:

post_install do |installer| 
  puts("Set deployment target")
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.3'
    end
  end
end

After I removed this one it processed without an error (still with Bitcode turned off). It really puzzles me though why setting the deployment target suddenly causes a rejection.

like image 35
Markus Avatar answered Sep 19 '22 15:09

Markus