# observer 野生动物实时识别 App(Flutter 版)。Android / iOS 一套代码,后端接口与支付见 [`docs/PaymentApi.md`](docs/PaymentApi.md)。 ## iOS 真机部署(iPhone) ### 构建与安装 ```bash # 生产包直接构建即可:默认 API_BASE_URL 为线上域名(lib/config/app_config.dart),无需传参 flutter build ios --release # 仅本地联调(后端跑在 Mac 上、手机连同一 Wi-Fi)时才覆盖为 Mac 局域网 IP: # flutter build ios --release --dart-define=API_BASE_URL=http://:8080 # 安装到真机(UDID 可用 `xcrun devicectl list devices` 查询) xcrun devicectl device install app --device build/ios/iphoneos/Runner.app # 启动并抓控制台日志(--terminate-existing 先杀掉旧实例) xcrun devicectl device process launch --console --terminate-existing \ --device com.observer.app ``` ### 注意事项(踩过的坑) - **debug 构建不能在真机上从桌面图标启动**:iOS 14+ 会提示 "In iOS 14+, debug mode Flutter apps can only be launched from Flutter tooling"。 debug 调试必须用 `flutter run -d <设备ID>` 或 Xcode IDE 启动(`flutter devices` 查设备ID); 从图标启动只对 release 构建有效。 - **模型输入是 NHWC**:`assets/model.tflite` 做过字节级手术(开头 TRANSPOSE→RESHAPE, 输入 [1,320,320,3]),改动记录见 git 历史,重导模型需同步处理,否则 iOS 报 "Node number 0 (TRANSPOSE) failed to prepare"。 - **模拟器黑屏**:本机 iOS 模拟器 Impeller 渲染黑屏,验证 UI 用 VM service (`flutter run` 输出里的 DevTools 地址),或直接真机验证。