flutter_unity_pod/build_xcframework.sh
zj 1256b5db50 升级到 XCFramework,添加模拟器支持
- 创建支持真机和模拟器的 XCFramework
- 模拟器版本使用空壳实现,用于开发调试
- 真机版本包含完整 Unity 运行时
- 更新 podspec 版本到 1.0.7
- 移除所有架构排除配置,XCFramework 自动处理
2025-11-25 13:37:00 +08:00

118 lines
3.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>UnityFramework</string>
<key>CFBundleIdentifier</key>
<string>com.unity3d.framework</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>UnityFramework</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>MinimumOSVersion</key>
<string>13.0</string>
</dict>
</plist>
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"