#!/bin/bash set -e echo "=== 开始构建 UnityFramework XCFramework ===" # 目录设置 REPO_DIR="/Users/apple/Desktop/work/flutter_unity_pod" STUB_DIR="$REPO_DIR/simulator_stub" BUILD_DIR="$REPO_DIR/build" DEVICE_FRAMEWORK="$REPO_DIR/UnityLibrary/UnityFramework.framework" # 清理之前的构建 rm -rf "$BUILD_DIR" mkdir -p "$BUILD_DIR" echo "1. 编译模拟器 framework..." cd "$STUB_DIR" # 编译 arm64 模拟器版本 xcrun clang -arch arm64 \ -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) \ -target arm64-apple-ios13.0-simulator \ -dynamiclib \ -o "$BUILD_DIR/UnityFramework_sim_arm64" \ -framework Foundation -framework UIKit \ -install_name @rpath/UnityFramework.framework/UnityFramework \ UnityFrameworkStub.m # 编译 x86_64 模拟器版本 xcrun clang -arch x86_64 \ -isysroot $(xcrun --sdk iphonesimulator --show-sdk-path) \ -target x86_64-apple-ios13.0-simulator \ -dynamiclib \ -o "$BUILD_DIR/UnityFramework_sim_x86_64" \ -framework Foundation -framework UIKit \ -install_name @rpath/UnityFramework.framework/UnityFramework \ UnityFrameworkStub.m # 合并模拟器架构 echo "2. 合并模拟器架构..." lipo -create \ "$BUILD_DIR/UnityFramework_sim_arm64" \ "$BUILD_DIR/UnityFramework_sim_x86_64" \ -output "$BUILD_DIR/UnityFramework_sim" # 创建模拟器 framework 结构 echo "3. 创建模拟器 framework 结构..." SIM_FRAMEWORK="$BUILD_DIR/UnityFramework-sim.framework" mkdir -p "$SIM_FRAMEWORK/Headers" mkdir -p "$SIM_FRAMEWORK/Modules" # 复制二进制 cp "$BUILD_DIR/UnityFramework_sim" "$SIM_FRAMEWORK/UnityFramework" # 复制头文件 cp -r "$DEVICE_FRAMEWORK/Headers/" "$SIM_FRAMEWORK/Headers/" # 创建 module.modulemap cat > "$SIM_FRAMEWORK/Modules/module.modulemap" << 'EOF' framework module UnityFramework { umbrella header "UnityFramework.h" export * module * { export * } } EOF # 创建 Info.plist cat > "$SIM_FRAMEWORK/Info.plist" << 'EOF' CFBundleExecutable UnityFramework CFBundleIdentifier com.unity3d.framework CFBundleInfoDictionaryVersion 6.0 CFBundleName UnityFramework CFBundlePackageType FMWK CFBundleShortVersionString 1.0 CFBundleVersion 1 MinimumOSVersion 13.0 EOF echo "4. 创建 XCFramework..." # 创建临时目录来存放不同平台的 framework DEVICE_BUILD="$BUILD_DIR/device" SIM_BUILD="$BUILD_DIR/simulator" mkdir -p "$DEVICE_BUILD" "$SIM_BUILD" # 复制真机 framework(保持原名) cp -r "$DEVICE_FRAMEWORK" "$DEVICE_BUILD/" # 移动模拟器 framework(保持原名) mv "$SIM_FRAMEWORK" "$SIM_BUILD/UnityFramework.framework" # 创建 XCFramework xcodebuild -create-xcframework \ -framework "$DEVICE_BUILD/UnityFramework.framework" \ -framework "$SIM_BUILD/UnityFramework.framework" \ -output "$BUILD_DIR/UnityFramework.xcframework" echo "5. 替换原来的 framework..." rm -rf "$REPO_DIR/UnityLibrary/UnityFramework.framework" cp -r "$BUILD_DIR/UnityFramework.xcframework" "$REPO_DIR/UnityLibrary/" echo "✅ 完成!XCFramework 已创建在: $REPO_DIR/UnityLibrary/UnityFramework.xcframework" echo "" echo "现在需要更新 podspec 以使用 XCFramework"