Search code examples
iosapp-store-connecthere-apixcode8.2

Unable to submit archive including Here Maps Premium SDK with Xcode 8.2.1


archive upload failure messages screenhot

Xcode was failing to submit a project including dynamic library "NMAKit.framework" required for Here Map Premium for iOS functionality.

(uploading the sample project included in Here Maps Premium SDK for iOS to avoid side effects caused by my project leading also to upload failure)

Bitcode was disabled in project's build settings.

I'am using the latest Xcode Version 8.2.1.

I don't have trouble submitting the app without NMAKit.framework.

It seems like the actual version (Here SDK V. 3.3) of the library is not accepted by Apple.

What steps would it take to get my project including the NMAKit.framework submitted to iTunes-Connect?


Solution

  • Step 1:

    Project->Target->Build Phase->Run Script

    Add Run Script

    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
    

    you can follow this Link.

    Step 2:

    Project->Target->General->Embedded Binaries

    Add NMAKit.framework like below image

    enter image description here