Need help?

Please type a word or phrase into the box below to search all our FAQ and support articles.

iOS: ERROR ITMS-90087: Unsupported Architectures.

Follow

ERROR:

ERROR ITMS-90087: "Unsupported Architectures. The executable for MicroBlink.framework contains unsupported architectures '[x86_64, i386]'." 

SOLUTION:

Apple will stop supporting Apps that have only 32-bit architecture. In other words, apps need to have 64-bit slices. Our framework actually has:
- arm7 32 bit - for iPhone 4 and 4s
- arm7s 32 bit - for iPhone 5
- arm64 54 bit - for iPhone 5S and newer
- x86 - for simulator
- x86_64 for the 64-bit simulator.

Microblink.framework is a dynamic framework which contains slices for all architectures device and simulator. If you intend to extract .ipa file for ad hoc distribution, you'll need to preprocess the framework to remove simulator architectures.


The ideal solution is to add a build phase after embed frameworks build phase, which strips unused slices from embedded frameworks.

We have an article on GitHub on how to remove the unsupported architectures when submitting your application to the App Store here.

 

 

Was this article helpful?
2 out of 2 found this helpful
Have more questions? Submit a request

Comments

  • Avatar
    Kent Johnson

    it should be lipo -remove instead of lipo -extract

    Also note that lipo -remove has to be done once for each architecture to remove. lipo does not modify the input file, it only produces a file so you have to run lipo -remove once for x86_64 and i386.

    example:
    $ cd plugins/com.microblink.BlinkIdScanner/src/ios/blinkid-ios/Microblink.framework
    $ mv MicroBlink MicroBlink_all_archs
    $ lipo -remove x86_64 MicroBlink_all_archs -o MicroBlink_some_archs
    $ lipo -remove i386 MicroBlink_some_archs -o MicroBlink
    $ rm MicroBlink_all_archs MicroBlink_some_archs