Files
chanora/.gitignore
T
EdisonJwa 1f729284b3 feat(flutter,ios): vendor chanora_bridge as a CocoaPods framework
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.
2026-05-16 15:57:36 +09:00

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/