Test Swift Package that vends XCFramework and has dependencies in example app before distribution

I've created a closed source iOS SDK from a local Swift package, which has dependencies on other Swift packages, and successfully created a binary XCFramework following the solution from my previous post. I would now like to create a Package.swift to vend this XCFramework and test it in an example app to verify it works as expected before I upload it to a public repo for distribution.

I understand that binaryTarget does not support dependencies so we need to use a wrapper. I created a directory containing the following:

Package.swift
MyFramework.xcframework/
MyFrameworkWrapper/
├─ dummy.swift

Package.swift contains:

// swift-tools-version: 5.10
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "MyFramework",
    platforms: [
        .iOS(.v14)
    ],
    products: [
        .library(
            name: "MyFramework",
            targets: ["MyFramework", "MyFrameworkWrapper"]
        )
    ],
    dependencies: [
        .package(url: "https://github.com/gordontucker/FittedSheets.git", from: "2.6.1")
    ],
    targets: [
        .target(
            name: "MyFrameworkWrapper",
            dependencies: [
                "FittedSheets"
            ],
            path: "MyFrameworkWrapper"
        ),
        .binaryTarget(
            name: "MyFramework",
            path: "MyFramework.xcframework"
        )
    ]
)

I created a new iOS app, selected the project, Package Dependencies > + > Add Local, and added the directory containing this Package.swift. Xcode resolves the dependencies and lists them in the sidebar. I added code to import and use the framework. It builds successfully but the app crashes when run:

dyld[63959]: Library not loaded: @rpath/FittedSheets.framework/FittedSheets
  Referenced from: <7DE247FC-DAFF-3946-AD21-E80F5AF841C9> /Users/Jordan/Library/Developer/Xcode/DerivedData/MyFramework-Example-gaeeymnqzenzrbbmhuebpodqctsz/Build/Products/Debug-iphonesimulator/MyFramework.framework/MyFramework

How do I get this working? I'm wondering is my package set up properly to vend the framework specifying its dependencies, and is my XCFramework created correctly?

The Package.swift for the framework's source code contains:

// swift-tools-version: 5.10
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "MyFramework",
    platforms: [
        .iOS(.v14)
    ],
    products: [
        .library(
            name: "MyFramework",
            type: .dynamic,
            targets: ["MyFramework"]
        )
    ],
    dependencies: [
        .package(url: "https://github.com/gordontucker/FittedSheets.git", from: "2.6.1")
    ],
    targets: [
        .target(
            name: "MyFramework",
            dependencies: [
                "FittedSheets"
            ],
            path: "Sources"
        )
    ]
)

And I created the XCFramework following the steps in that previous thread:

  1. Create archive from package via xcodebuild archive -workspace "$PACKAGE_PATH" -scheme "$FRAMEWORK_NAME" -destination 'generic/platform=iOS' -archivePath "$ARCHIVE_PATH/iOS" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ENABLE_USER_SCRIPT_SANDBOXING=NO ENABLE_MODULE_VERIFIER=NO OTHER_SWIFT_FLAGS=-no-verify-emitted-module-interface
  2. Create the Modules directory in the framework via mkdir -p "$ARCHIVE_PATH/iOS.xcarchive/Products/usr/local/lib/$FRAMEWORK_NAME.framework/Modules"
  3. Copy the Swift interface files into the framework from the build in DerivedData via cp -a "$BUILD_PRODUCTS_PATH/Build/Intermediates.noindex/ArchiveIntermediates/$FRAMEWORK_NAME/BuildProductsPath/Release-iphoneos/$FRAMEWORK_NAME.swiftmodule" "$ARCHIVE_PATH/iOS.xcarchive/Products/usr/local/lib/$FRAMEWORK_NAME.framework/Modules"
  4. Repeat 1-3 for iOS Simulator
  5. Create an XCFramework via xcodebuild -create-xcframework -framework "$ARCHIVE_PATH/iOS.xcarchive/Products/usr/local/lib/$FRAMEWORK_NAME.framework" -framework "$ARCHIVE_PATH/iOS_Simulator.xcarchive/Products/usr/local/lib/$FRAMEWORK_NAME.framework" -output "$ARCHIVE_PATH/$FRAMEWORK_NAME.xcframework"
Test Swift Package that vends XCFramework and has dependencies in example app before distribution
 
 
Q