Code Signing Fails in Debug Mode with Embedded Framework

I can no longer run my app from Xcode with code signing for my Mac app. I've configured a debug provisioning profile manually and tried that but it fails, saying the embedded framework is not code signed at all.


I tried "Automatic" code signing but it fails with the same error:


code object is not signed at all

In subcomponent: PATH_HERE

Command /usr/bin/codesign failed with exit code 1


The only way I'm able to get the app to run is to turn off code signing alltogether in Debug mode. I've noticed in that case though, testing is pretty useless because my app can't event write a security scoped bookmark to disk.

  • This for release if you face code signing issues due to framework, plz follow the same

    Type a script or drag a script file from your workspace to insert its path. skip if we run in debug

    if [ "$CONFIGURATION" == "Debug" ]; then echo "Skip frameworks cleaning in debug version" exit 0 fi

    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*.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

Add a Comment

Replies

It seems that Xcode is trying to use the Personal team instead of my dev team for subprojects and embedded frameworks. I remember running into something like this awhile ago and moving the Personal team certificates into another keychain to resolve. I'm on a new Mac, tried the same thing, but stil having issues


I can clearly see Xcode is asking for permission to the wrong keychain to sign an XPC service embedded in my app using the personal team.


Edit: I switched all to use the personal team, seems that xcode is still gives me the same error about the embedded framework which I'm not building from source. "Code Sign on Copy" is checked in build settings.

Heh, I chucked some certificates from keychain finally was able to get Xcode to not complain about signing mismatch. For the embedded frameworks not building from source I codesigned them from the Command line. Seems to be working (for now). Not sure why automatic signing is unable to code sign those frameworks on copy properly though.