ERROR ITMS-90085: “No architectures in the binary. Lipo failed to detect any architectures in the bundle executable.”

So it turns out that we were doing some native bindings in our project. In one of these bindings we included a framework at the root of the project, the framework being a folder that includes sub-folders that contain the lib.a. It turns out that at compilation time the whole framework folder structure was being copied into the resulting IPA and this was causing the issue. The solution was to simply extract the lib.a and move it to the root of the project and delete the framework folder. The resulting IPA no longer had the framework folder and the submission went through without a glitch.


I recently ran into this error for a totally different reason. We were using this really popular script to remove unused architectures from our app before app store submission.

The problem is that this script does the totally wrong thing if you include a watch app and are building with Xcode 10! It looks for all architectures in the ARCHS variable and removes all other architectures from fat binaries, the problem is

  • ARCHS doesn't include watch architectures, and
  • starting in Xcode 10, watch binaries are fat (due to the new watch)

In XCode 9 the script would skip over watch stuff, but now it wrongly strips them.

I fixed the error by changing the script to instead only remove simulator architectures.

EXTRACTED_ARCHS=()
GOOD_ARCHS=()

PRESENT_ARCHS=($(lipo -archs "$FRAMEWORK_EXECUTABLE_PATH"))

if [[ "${#PRESENT_ARCHS[@]}" -lt 2 ]]
then
    echo "Framework is not a Fat binary, skipping..."
    continue
fi

for ARCH in "${PRESENT_ARCHS[@]}"
do
    if [[ "$ARCH" != x86_64 && "$ARCH" != i386 ]]
    then
        echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
        lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
        GOOD_ARCHS+=("$ARCH")
        EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
    fi
done

May sometimes this error occurs when you in hurry and forgot to change Build Environment to Generic iOS Device for Archiving !

Find image here!