#!/bin/bash # --------------------------------------------------------------- # build_xc_framework.sh # Build NewHttpDNS.xcframework (device + simulator) # Usage: sh build_xc_framework.sh # --------------------------------------------------------------- set -euo pipefail SCHEME="NewHttpDNS" PROJECT="NewHttpDNS.xcodeproj" CONFIGURATION="Release" FRAMEWORK_NAME="NewHttpDNS" BUILD_DIR="$(pwd)/Build" ARCHIVE_IOS="${BUILD_DIR}/ios.xcarchive" ARCHIVE_SIM="${BUILD_DIR}/ios-simulator.xcarchive" OUTPUT_XCF="${BUILD_DIR}/${FRAMEWORK_NAME}.xcframework" echo "==> Cleaning old build artifacts..." rm -rf "${BUILD_DIR}" mkdir -p "${BUILD_DIR}" # ---- 1. Archive: iOS device (arm64) ---- echo "==> Archive: iOS device (arm64)..." xcodebuild archive \ -project "${PROJECT}" \ -scheme "${SCHEME}" \ -configuration "${CONFIGURATION}" \ -destination "generic/platform=iOS" \ -archivePath "${ARCHIVE_IOS}" \ SKIP_INSTALL=NO \ BUILD_LIBRARY_FOR_DISTRIBUTION=YES \ ENABLE_MODULE_VERIFIER=NO \ | tail -1 # ---- 2. Archive: iOS Simulator (arm64 + x86_64) ---- echo "==> Archive: iOS Simulator (arm64 + x86_64)..." xcodebuild archive \ -project "${PROJECT}" \ -scheme "${SCHEME}" \ -configuration "${CONFIGURATION}" \ -destination "generic/platform=iOS Simulator" \ -archivePath "${ARCHIVE_SIM}" \ SKIP_INSTALL=NO \ BUILD_LIBRARY_FOR_DISTRIBUTION=YES \ ENABLE_MODULE_VERIFIER=NO \ | tail -1 # ---- 3. Create XCFramework ---- echo "==> Creating XCFramework..." xcodebuild -create-xcframework \ -framework "${ARCHIVE_IOS}/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework" \ -framework "${ARCHIVE_SIM}/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework" \ -output "${OUTPUT_XCF}" echo "" echo "==========================================" echo " Done! Output: ${OUTPUT_XCF}" echo "=========================================="