iOS rejects loose .dylib loads (`dlopen` of any path outside the
app bundle is sandboxed), so a Flutter-Rust bridge has to ship
inside the .app as an Embed-and-Sign framework that
flutter_rust_bridge's runtime loader can dlopen via its default
`chanora_bridge.framework/chanora_bridge` lookup path.
This commit wires the bridge into the iOS build via a CocoaPods
podspec. Same role Cargokit plays for other Flutter+Rust setups,
done by hand against this repo's layout to avoid the Cargokit
vendoring footprint that was previously dropped.
apps/chanora_flutter/ios/chanora_bridge.podspec
New file. `prepare_command` invokes
`cargo build --release --target aarch64-apple-ios -p chanora_bridge`
with IPHONEOS_DEPLOYMENT_TARGET=13.0 +
CMAKE_POLICY_VERSION_MINIMUM=3.5 (satisfies audiopus_sys's
cmake invocation on modern CMake 4.x), then wraps the
produced libchanora_bridge.dylib into
chanora_bridge.framework with an Info.plist that declares
iPhoneOS / MinimumOSVersion=13.0, and rewrites LC_ID_DYLIB
to @rpath/chanora_bridge.framework/chanora_bridge.
`vendored_frameworks` exposes the result to CocoaPods, which
integrates it into Runner.xcodeproj with Embed & Sign
automatically. No Xcode UI edits required.
apps/chanora_flutter/ios/Podfile
Add `pod 'chanora_bridge', :path => '.'` to the Runner
target.
apps/chanora_flutter/ios/Podfile.lock
Generated by `pod install` after the pod was added. Pins
chanora_bridge 1.0.0 + checksum so iOS builds on other
developer machines pull the same framework version.
.gitignore
Add `/apps/chanora_flutter/ios/Frameworks/` so the
~13 MB built framework (regenerated on every pod install) is
not committed.
Verified end-to-end on the M1 Mac (coder@100.118.130.73):
pod install ok
chanora_bridge.framework generated at
apps/chanora_flutter/ios/Frameworks/chanora_bridge.framework
Install name: @rpath/chanora_bridge.framework/chanora_bridge
flutter build ios --release --no-codesign 12.7 s
-> Runner.app 29.9 MB (was 16.9 MB without the bridge)
-> Runner.app/Frameworks/chanora_bridge.framework present
alongside Flutter.framework, App.framework,
connectivity_plus.framework, objective_c.framework.
DEC-025: iOS / iPad officially in scope for P0.
Notes for owners installing on physical iOS devices:
The Personal Apple Team in Xcode requires a unique
PRODUCT_BUNDLE_IDENTIFIER (the default 'app.chanora.chanoraFlutter'
may already be claimed in the App Store registry). Set this
locally in Xcode -> Runner target -> Signing & Capabilities ->
Bundle Identifier (e.g. yourname.chanora.chanoraFlutter); do
NOT commit that change back since it is user-specific.
102 lines
1.5 KiB
Plaintext
102 lines
1.5 KiB
Plaintext
# OS files
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Editors
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
|
|
# Logs
|
|
*.log
|
|
logs/
|
|
|
|
# Environment / secrets
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
*.pem
|
|
*.key
|
|
*.p12
|
|
*.mobileprovision
|
|
*.keystore
|
|
*.jks
|
|
|
|
# Build output
|
|
build/
|
|
dist/
|
|
out/
|
|
target/
|
|
.dart_tool/
|
|
.flutter-plugins
|
|
.flutter-plugins-dependencies
|
|
.packages
|
|
.pub-cache/
|
|
.pub/
|
|
ios/Pods/
|
|
ios/.symlinks/
|
|
android/.gradle/
|
|
android/app/build/
|
|
|
|
# Generated reports
|
|
reports/
|
|
coverage/
|
|
|
|
# Diagnostic bundles
|
|
diagnostics/
|
|
*.diag.zip
|
|
*.diagnostic.zip
|
|
|
|
# Local databases
|
|
*.sqlite
|
|
*.sqlite3
|
|
*.db
|
|
*.db-shm
|
|
*.db-wal
|
|
|
|
# Temporary files
|
|
tmp/
|
|
temp/
|
|
.cache/
|
|
|
|
# Upstream documentation snapshots (kept as reference, not project source)
|
|
chanora-docs-repo-format-*.zip
|
|
|
|
# Cargo
|
|
**/Cargo.lock.bak
|
|
|
|
# Flutter / Dart generated (but keep pubspec.lock for the PoC apps)
|
|
**/.dart_tool/
|
|
**/.flutter-plugins
|
|
**/.flutter-plugins-dependencies
|
|
**/.packages
|
|
**/build/
|
|
**/ephemeral/
|
|
**/generated_plugin_registrant.*
|
|
**/GeneratedPluginRegistrant.*
|
|
|
|
# FRB / cargokit local build dirs
|
|
**/cargokit_build/
|
|
|
|
# Android / Gradle local state
|
|
**/.gradle/
|
|
**/local.properties
|
|
|
|
# JNI native libraries produced by cargoBuildRust / cargo-ndk
|
|
# (regenerated by the Gradle build; not project source).
|
|
**/jniLibs/**/*.so
|
|
|
|
# IntelliJ / Android Studio per-project
|
|
**/*.iml
|
|
|
|
# gen2/ holds the externally-provided review summary + zip baseline.
|
|
# Not part of the repo tree; do not commit.
|
|
/gen2/
|
|
|
|
# opencode agent local config
|
|
opencode.json
|
|
|
|
# iOS framework build artifacts produced by chanora_bridge.podspec
|
|
/apps/chanora_flutter/ios/Frameworks/
|