mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 02:29:55 +02:00
feat(apple): native SwiftUI app for iOS and macOS
Add a native SwiftUI VniDrop app (Send/Receive/Settings) talking to the Rust core via generated UniFFI Swift bindings, plus the uniffi-bindgen helper crate. iOS uses a TabView, macOS a NavigationSplitView sidebar.
This commit is contained in:
30
apple/VnidropCore/Package.swift
Normal file
30
apple/VnidropCore/Package.swift
Normal file
@@ -0,0 +1,30 @@
|
||||
// swift-tools-version:5.9
|
||||
import PackageDescription
|
||||
|
||||
// Local package wrapping the VniDrop Rust core:
|
||||
// - `vnidrop` binary target: the xcframework of static libraries + the FFI
|
||||
// C module (`vnidropFFI`), produced by apple/scripts/build-core.sh.
|
||||
// - `VnidropCore` target: the generated Swift bindings (`Vnidrop.swift`).
|
||||
//
|
||||
// Both `vnidrop.xcframework` and `Sources/VnidropCore/Vnidrop.swift` are build
|
||||
// outputs and are gitignored; run apple/scripts/build-core.sh to (re)generate.
|
||||
let package = Package(
|
||||
name: "VnidropCore",
|
||||
platforms: [
|
||||
.iOS(.v16),
|
||||
.macOS(.v13),
|
||||
],
|
||||
products: [
|
||||
.library(name: "VnidropCore", targets: ["VnidropCore"]),
|
||||
],
|
||||
targets: [
|
||||
.binaryTarget(
|
||||
name: "vnidrop",
|
||||
path: "vnidrop.xcframework"
|
||||
),
|
||||
.target(
|
||||
name: "VnidropCore",
|
||||
dependencies: ["vnidrop"]
|
||||
),
|
||||
]
|
||||
)
|
||||
25
apple/VnidropCore/README.md
Normal file
25
apple/VnidropCore/README.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# VnidropCore (Swift package)
|
||||
|
||||
Swift bindings for the VniDrop Rust transfer core (`crates/vnidrop`), generated
|
||||
with UniFFI in library mode. The Rust crate is never modified for this — the
|
||||
Swift surface is produced from the compiled staticlib.
|
||||
|
||||
## Regenerate
|
||||
|
||||
From the repository root:
|
||||
|
||||
```bash
|
||||
apple/scripts/build-core.sh release # or: debug
|
||||
```
|
||||
|
||||
This builds `libvnidrop.a` for `aarch64-apple-ios`, `aarch64-apple-ios-sim`, and
|
||||
`aarch64-apple-darwin`, generates `Sources/VnidropCore/Vnidrop.swift`, and
|
||||
assembles `vnidrop.xcframework`.
|
||||
|
||||
## Generated / ignored artifacts
|
||||
|
||||
- `vnidrop.xcframework/`
|
||||
- `Sources/VnidropCore/Vnidrop.swift`
|
||||
|
||||
Both are gitignored. A clean checkout must run the build script before opening
|
||||
the Xcode project.
|
||||
Reference in New Issue
Block a user