App Store Thinks DYLIB is not 64 bit

This is a weird problem I’ve run into. I’m using transporter to upload my monogame game to the App Store and it is failing saying that libopnal.1.dylib is not 64 bit. I’ve built my application both on a Mac and then on Windows with dotnet publish -r osx-x64
and each one adds the libopnal.1.dylib to the package.

Does anyone know a solution to this? The error message is below.

Asset validation failed (90240)
Unsupported Architectures. Your executable contained the following disallowed architectures: ‘[i386 (in com.davidlent.battleofzama.pkg/Payload/BattleOfZamaMacintosh.app/Contents/MacOs/libopenal.1.dylib)]’. New apps submitted to the Mac App Store must support 64-bit starting January 2018, and Mac app updates and existing apps must support 64-bit starting June 2018. (ID: 4ae29355-9dd5-4da0-a114-1ae048bd9d98)

Try to run otool on your dylib to figure out which architectures it supports.

1 Like

Thanks! otool didn’t show it, but lipo showed that it also had i386 architecture in addition to one another. I was able to remove the i386 architecture from it and it solved the problem.

If anyone else has this problem, I used the following two commands to identify the architectures and then remove the i386 one.

lipo -archs libopenal.1.dylib
lipo -remove i386 -output libopenal.1.dylib.new libopenal.1.dylib

Okay, so the app store check result was misleading. It’s about x86 being deprecated, not about x64 being missing. Good to know.

FYI, assuming that you’re using MonoGame 3.8.1, you can also publish for arm64. You will have to fuse the x64 and arm64 binaries though if you’d like to create a universal app.