
Omi Flutter App 开发环境怎么搭make dev-up 本地 harness 加 setup.sh 首次跑通【免费下载链接】FriendAI that sees your screen, listens to your conversations and tells you what to do项目地址: https://gitcode.com/GitHub_Trending/fr/Friend你要完成的任务是在本机把 Omi 的 Flutter 移动应用iOS 或 Android以devflavor 构建起来并让它连上本仓库自带的本地后端 harnessPython API Firebase Auth/Firestore 模拟器完成首次跑通。整条路径全程在本地机器上运行不触碰任何生产数据。官方推荐路径是 docs/doc/developer/AppSetup.mdx 中的 Build the App Automatically一条make dev-up起服务再进app/目录跑setup.sh。准备条件按 AppSetup 文档列出的前置依赖依赖用途Flutter SDK含 Dart建议 v3.44.5 或更高核心框架Xcodev16.4 或更高 CocoaPodsv1.16.2 或更高iOS 开发Android Studio、JDK v21、Gradle v8.10、NDK 28.2.13676358Android 开发NDK为 ARM 设备构建 OpusPython 3.11本地 harness 使用后端 pin 在 3.11不要用 3.12Java 运行时Firestore 模拟器需要firebase-tools或npx启动 Firebase 模拟器用flutter doctor -v检查工具链文档给出的示例输出文档示例仅作参照[✓] Flutter (Channel stable, 3.44.5, on macOS 15.4.1) [✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0) [✓] Xcode - develop for iOS and macOS (Xcode 16.4) [✓] Chrome - develop for the web [✓] Android Studio (version 2025.1) [✓] VS Code (version 1.101.0) [✓] Connected device (4 available) [✓] Network resourcesharness 缺 Python 3.11、Java 或 firebase-tools 时make dev-up会把缺少的项直接点名报出来。第一步启动本地后端 harness在仓库根目录执行Makefile 中这些 target 分别转发到scripts/dev-harness/下的脚本make dev-init # 一次性创建 backend/.venv并复制 backend/.env.local-dev.template 为 backend/.env.local-dev make dev-up # 启动 Firestore Auth 模拟器和 Python API两点注意make dev-init会用当前python3解析到的解释器构建backend/.venv所以先确认它解析到的是 Python 3.11否则 harness 稍后会以 import 错误失败。如果你有 OpenAI / Deepgram / Gemini / Anthropic 的 API key把它们写进backend/.env.local-devdev-init已从模板复制出来。没有 key 也可以用离线假 provider 起步PROVIDER_MODEoffline make dev-upharness 注入的固定端点见 local-emulator-manual-qa.md这些是 harness 内部值不要写进.env.local-dev写了也会被忽略设置值Firebase 项目demo-omi-localFirestore 模拟器127.0.0.1:8085Auth 模拟器127.0.0.1:9099Redis127.0.0.1:6380Python APIhttp://127.0.0.1:8000第二步验证 harness 已就绪make dev-status # 输出各端点、provider 模式、已 seed 的本地用户harness 会 seed 本地用户runbook 列出的有ProfileEmail密码alice默认alicelocal.omi.invalidalice-local-password-030bobboblocal.omi.invalidbob-local-password-030local_default_userlocal_default_userlocal.omi.invalidlocal_default_user-local-password-030确认端点都在监听后再进行下一步不用的时候用make dev-down停止 harness 进程。第三步用 setup.sh 构建并运行 Appsetup.sh本身不启动任何后端服务——必须先完成第一步否则 App 能构建、能启动但每个请求都连不上。进入 App 目录并按平台执行app/setup.sh 会依次完成写入.dev.env并指向http://127.0.0.1:8000/、安装demo-omi-local的本地 Firebase 模拟器配置、flutter pub get、iOS 侧pod install、dart run build_runner build最后直接flutter runcd app bash setup.sh ios # iOS # 或 bash setup.sh android # Android脚本内置了版本检查如check_ios_prerequisites会检查 Flutter ≥ 3.44.5、Xcode 可用且 ≥ 16.4、CocoaPods ≥ 1.16.2、jq缺什么会列出缺失项和修复命令而不是在构建深处报一个莫名错误。也可以不走setup.sh的最后一步改为手动运行flutter run --flavor dev或在 IDE 中运行Xcode 打开app/iosAndroid Studio 打开app/android然后按 run。结果验证make dev-status显示端点、provider 模式与 seed 用户正常可选make dev-summary看会话摘要。flutter run把 App 装到模拟器上iOS 模拟器用127.0.0.1寻址本地服务Android 模拟器默认走10.0.2.2emulator 的 host 别名。如果 App 能连上 harness用上面表格里的 seed 账号如alice即可在本地环境登录。常见失败与排查App 连不上后端connection refused / 超时setup.sh构建的 App 指向http://127.0.0.1:8000但它不启动任何进程。确认已在仓库根目录先跑make dev-up再用make dev-status核实。真机上127.0.0.1是手机自己需要把OMI_DEV_HOST设成 Mac 的局域网或 Tailscale 地址只接受私有地址如192.168.x.x、100.x.x.x并且要在同一个 shell里让setup.sh和make dev-up都看到它——前者决定 App 编译时指向哪后者让 harness 真正监听在那个地址默认只监听 loopback。只想让 harness 绑定与 App 不同地址时用OMI_DEV_BIND_HOST。登录成功但所有请求返回 401 UnauthorizedApp 和后端不在同一个 Firebase 项目上。Firebase ID token 是项目范围的demo-omi-local的 token 无法被其他项目的后端验证所以登录看似成功、之后全部 401。不要把 dev 构建指向 Omi 共享的生产 APIhttps://api.omiapi.com/——它按生产项目验证 token本地模拟器签发的 token 一律被拒要访问生产数据需要显式的beta构建bash setup.sh ios beta且需要FIREBASE_SERVICE_ACCOUNT_KEY本文不展开该路径。iOS 真机flutter run挂着时能跑从主屏打开就崩debug 构建的 Dart VM 是 JIT 模式iOS 只允许 Flutter 工具链在真机上启动 JIT VMflutter run断开后 App 无法自启。解法之一是装 AOT 构建OMI_MOBILE_BUILD_MODEprofile bash setup.sh iosprofile或 release构建可以从主屏直接打开代价是没有 hot reload在flutter run里按d可以断开工具但保持 App 运行。setup.sh ios在 debug 构建要装到真机时会主动打警告。模拟器没有这个限制。限制与收尾这条路径整体跑在本机本地 API、本地模拟器是开发迭代最快的组合它产出的行为只能算本地手动 QA 证据不代表任何生产验证。停止服务用make dev-down需要清掉 harness 本地状态时用make dev-reset只清 sentinel 拥有的本地状态不删除真实外部 provider 侧保留的数据。想换自己的后端而非本地 harness走 AppSetup 文档的 Build the App Manually 路径自己维护.dev.envAPI_BASE_URL记得带尾部/和自己的 Firebase 配置本文不覆盖。【免费下载链接】FriendAI that sees your screen, listens to your conversations and tells you what to do项目地址: https://gitcode.com/GitHub_Trending/fr/Friend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考