feat: iOS XCFramework build - device + simulator static libs
This commit is contained in:
parent
ddcc5b392c
commit
6a0ac9c15c
43
bindings/ios/ZxDocumentRuntime.xcframework/Info.plist
Normal file
43
bindings/ios/ZxDocumentRuntime.xcframework/Info.plist
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<?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>AvailableLibraries</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>BinaryPath</key>
|
||||||
|
<string>libzx_document_ffi.a</string>
|
||||||
|
<key>LibraryIdentifier</key>
|
||||||
|
<string>ios-arm64</string>
|
||||||
|
<key>LibraryPath</key>
|
||||||
|
<string>libzx_document_ffi.a</string>
|
||||||
|
<key>SupportedArchitectures</key>
|
||||||
|
<array>
|
||||||
|
<string>arm64</string>
|
||||||
|
</array>
|
||||||
|
<key>SupportedPlatform</key>
|
||||||
|
<string>ios</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>BinaryPath</key>
|
||||||
|
<string>libzx_document_ffi.a</string>
|
||||||
|
<key>LibraryIdentifier</key>
|
||||||
|
<string>ios-arm64-simulator</string>
|
||||||
|
<key>LibraryPath</key>
|
||||||
|
<string>libzx_document_ffi.a</string>
|
||||||
|
<key>SupportedArchitectures</key>
|
||||||
|
<array>
|
||||||
|
<string>arm64</string>
|
||||||
|
</array>
|
||||||
|
<key>SupportedPlatform</key>
|
||||||
|
<string>ios</string>
|
||||||
|
<key>SupportedPlatformVariant</key>
|
||||||
|
<string>simulator</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>XFWK</string>
|
||||||
|
<key>XCFrameworkFormatVersion</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
Binary file not shown.
Binary file not shown.
BIN
bindings/ios/device/libzx_document_ffi.a
Normal file
BIN
bindings/ios/device/libzx_document_ffi.a
Normal file
Binary file not shown.
BIN
bindings/ios/simulator/libzx_document_ffi.a
Normal file
BIN
bindings/ios/simulator/libzx_document_ffi.a
Normal file
Binary file not shown.
44
scripts/build-ios.sh
Executable file
44
scripts/build-ios.sh
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Build iOS XCFramework for zhixi-document-runtime
|
||||||
|
set -e
|
||||||
|
|
||||||
|
RUST_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||||
|
OUT_DIR="$RUST_DIR/bindings/ios"
|
||||||
|
LIB_NAME="libzx_document_ffi.a"
|
||||||
|
MODULE_NAME="ZxDocumentRuntime"
|
||||||
|
|
||||||
|
# Ensure iOS targets are installed
|
||||||
|
rustup target add aarch64-apple-ios aarch64-apple-ios-sim
|
||||||
|
|
||||||
|
echo "==> Building for iOS device (arm64)..."
|
||||||
|
cargo build --release --target aarch64-apple-ios
|
||||||
|
|
||||||
|
echo "==> Building for iOS simulator (arm64)..."
|
||||||
|
cargo build --release --target aarch64-apple-ios-sim
|
||||||
|
|
||||||
|
# Prepare output
|
||||||
|
rm -rf "$OUT_DIR/ZxDocumentRuntime.xcframework"
|
||||||
|
mkdir -p "$OUT_DIR/device" "$OUT_DIR/simulator" "$OUT_DIR/generated"
|
||||||
|
|
||||||
|
# Copy libraries
|
||||||
|
cp "target/aarch64-apple-ios/release/$LIB_NAME" "$OUT_DIR/device/"
|
||||||
|
cp "target/aarch64-apple-ios-sim/release/$LIB_NAME" "$OUT_DIR/simulator/"
|
||||||
|
|
||||||
|
# Generate Swift bindings
|
||||||
|
echo "==> Generating Swift bindings..."
|
||||||
|
uniffi-bindgen-swift \
|
||||||
|
--module-name "$MODULE_NAME" \
|
||||||
|
--swift-sources \
|
||||||
|
"$RUST_DIR/crates/zx_document_ffi/src/zx_document.udl" \
|
||||||
|
"$OUT_DIR/generated"
|
||||||
|
|
||||||
|
# Create XCFramework
|
||||||
|
echo "==> Creating XCFramework..."
|
||||||
|
xcodebuild -create-xcframework \
|
||||||
|
-library "$OUT_DIR/device/$LIB_NAME" \
|
||||||
|
-library "$OUT_DIR/simulator/$LIB_NAME" \
|
||||||
|
-output "$OUT_DIR/ZxDocumentRuntime.xcframework"
|
||||||
|
|
||||||
|
echo "==> Done!"
|
||||||
|
echo "XCFramework: $OUT_DIR/ZxDocumentRuntime.xcframework"
|
||||||
|
echo "Swift sources: $OUT_DIR/generated/"
|
||||||
Loading…
x
Reference in New Issue
Block a user