fix(ios,macos): address PR #26 review findings

- ios/Runner.xcodeproj/project.pbxproj: Update RunnerTests TEST_HOST
  paths from Runner.app/Runner to Chanora.app/Chanora (target was
  renamed in prior commit but test config still pointed at old paths,
  breaking xcodebuild test).
- Cargo.toml: Move release DWARF flags from workspace [profile.release]
  into Apple-only podspec CARGO_PROFILE_RELEASE_* env vars so Android,
  Linux, Windows release builds stay lean (~10MB DWARF avoided).
- ios/Runner/Info.plist + macos/Runner/Info.plist: Flip
  ITSAppUsesNonExemptEncryption from false to true (Chanora ships
  ChaCha20-Poly1305 local storage + tsclientlib ECDH/AES-EAX voice
  channel encryption, not exempt under Apple export-compliance rules).
- scripts/verify_silero_exports.sh: Make slice-aware via lipo -archs
  loop + per-arch nm -arch invocation so universal macOS builds
  verify every architecture slice, not just whichever slice nm picks.
- .gitignore: Drop .omo/ and .playwright-mcp/ entries (scope leak;
  unrelated tooling state, not part of PR #26 archive-symbol concern).
This commit is contained in:
Edison Jwa
2026-06-07 23:12:07 +09:00
parent a589ac953f
commit 9d8a1f8fd1
8 changed files with 73 additions and 45 deletions
+11 -21
View File
@@ -83,26 +83,16 @@ tsproto-types = { git = "https://github.com/EdisonJwa/tsclientlib.git", branch =
[patch.crates-io]
cmake = { git = "https://github.com/pr2502/cmake-rs", rev = "bdad5edc569d82151922c5c6c4685b1563f12aa1" }
# Emit DWARF debug info in release builds.
# Apple-only DWARF emission for archive validation lives in the iOS and
# macOS chanora_bridge podspecs (apps/chanora_flutter/{ios,macos}/
# chanora_bridge.podspec) as per-build environment overrides:
#
# Apple's archive validator (and App Store Connect upload) require a
# matching `.dSYM` for every embedded framework, keyed by the framework
# binary's LC_UUID. The CocoaPods bridge podspecs copy the cargo-built
# `libchanora_bridge.dylib` into `chanora_bridge.framework/chanora_bridge`
# and then run `dsymutil` on it (see apps/chanora_flutter/ios and
# apps/chanora_flutter/macos podspecs). `dsymutil` needs DWARF in the
# input binary to produce a useful dSYM with symbol records; without
# `debug = true` here we'd ship a stripped binary and an empty/unusable
# dSYM and TestFlight crash reports would be unsymbolicated.
# CARGO_PROFILE_RELEASE_DEBUG=true
# CARGO_PROFILE_RELEASE_SPLIT_DEBUGINFO=off
# CARGO_PROFILE_RELEASE_STRIP=false
#
# `split-debuginfo = "off"` keeps DWARF inside the dylib so install_name_tool
# rewriting and the dsymutil pass both work without chasing per-object
# `.o` files cargo would otherwise scatter under target/<triple>/release/deps.
#
# `strip = false` ensures cargo does not pre-strip the dylib before
# dsymutil sees it. We strip the in-framework binary ourselves after the
# dSYM is produced (handled in the podspec script phases).
[profile.release]
debug = true
split-debuginfo = "off"
strip = false
# This keeps Android, Linux, and Windows release binaries on the cargo
# default release profile (no DWARF, no extra ~10MB symbol payload).
# Apple builds need the DWARF so dsymutil can emit a usable
# chanora_bridge.framework.dSYM that the archive validator accepts.