Submitting to Apple

Once you create your app in the Snap Kit developer portal and develop your app using the SDKs, it’s time to submit your app to Apple. Learn how to complete the final building and publishing phase.

Including the framework thinning script in your build

The Snap Kit SDK contains fat frameworks that have both simulator and device binaries. Before submitting to Apple, the simulator binaries must be stripped out. Copy the code block below and paste the code as a run script in the Build Phases of your target. Make sure you put it after the embed frameworks phase and set it to use /bin/sh. Otherwise, you’ll see an error about unsupported architecture.

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
    FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
    FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
    echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"

    EXTRACTED_ARCHS=()

    for ARCH in $ARCHS
    do
        echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
        lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
        EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
    done

    echo "Merging extracted architectures: ${ARCHS}"
    lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
    rm "${EXTRACTED_ARCHS[@]}"

    echo "Replacing original executable with thinned version"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"

done

Here's a sample screenshot for your reference. Run Script in Build Phases

If you’re having trouble, you might find it helpful to read about stripping unwanted architectures from dynamic libraries in Xcode.