EasyNVR 的 Flutter 客户端,支持连接 EasyNVR 服务、设备登录、实时预览、录像回放和基础云台控制。
当前项目使用并验证于:
- Flutter 3.47.4(stable)
- Dart 3.13.3
- Android Studio 最新稳定版及 Android SDK
- Xcode 现行稳定版(仅 macOS/iOS 构建需要)
- CocoaPods(仅 iOS 构建需要)
平台要求:Android 使用 Flutter 当前默认的 Android SDK、NDK 和 minSdk 配置;iOS 最低 iOS 15.0。
检查环境:
flutter doctor -v
flutter --versiongit clone <your-public-repository-url>
cd easynvr_app
flutter pub get
dart run build_runner build代码生成涉及 Riverpod、Freezed 和 JSON 序列化模型。修改带有注解的 Dart 文件后,需要重新运行 build_runner。
应用通过 --dart-define 配置运行环境,配置定义位于 lib/core/config/app_env.dart:
| 参数 | 说明 | 默认值 |
|---|---|---|
APP_ENV |
dev、staging 或 prod |
dev |
APP_NAME |
应用显示名称 | EasyNVR |
API_BASE_URL |
EasyNVR API 地址 | 平台默认地址 |
PLATFORM_BASE_URL |
平台服务地址 | https://www.tsingsee.cn |
ENABLE_NETWORK_LOG |
是否输出网络日志 | true |
示例:
flutter run \
--dart-define=APP_ENV=dev \
--dart-define=APP_NAME=EasyNVR \
--dart-define=API_BASE_URL=https://nvr.example.com \
--dart-define=ENABLE_NETWORK_LOG=true不要把服务端密钥、签名文件或生产环境私密配置提交到仓库。
flutter devices
flutter run指定设备运行:
flutter run -d <device-id>iOS 首次运行:
flutter pub get
cd ios
pod install
cd ..
flutter run -d <ios-device-id>dart run build_runner build
flutter analyze
flutter test持续监听代码生成:
dart run build_runner watchDebug APK:
flutter build apk --debugRelease APK:
flutter build apk --release \
--dart-define=APP_ENV=prod \
--dart-define=API_BASE_URL=https://nvr.example.com产物位于 build/app/outputs/flutter-apk/。发布到 Google Play 推荐构建 App Bundle:
flutter build appbundle --release \
--dart-define=APP_ENV=prod \
--dart-define=API_BASE_URL=https://nvr.example.com产物位于 build/app/outputs/bundle/release/。正式签名前,在 android/key.properties 配置 keystore。该文件和 keystore 不应提交到公开仓库;没有签名配置时,项目仅使用 debug 签名,适合本地验证,不适合发布。
flutter build ios --release \
--dart-define=APP_ENV=prod \
--dart-define=API_BASE_URL=https://nvr.example.com需要生成可上传 App Store Connect 的归档包时:
- 使用 Xcode 打开
ios/Runner.xcworkspace。 - 在 Signing & Capabilities 中配置 Team、Bundle Identifier 和签名证书。
- 选择
Any iOS Device (arm64),执行 Product > Archive。 - 在 Organizer 中校验并上传归档包。
lib/
├── core/ # 配置、HTTP、模型、Provider、路由和主题
├── pages/ # 页面和业务界面
├── services/ # 本地存储等基础服务
└── widgets/ # 通用组件
android/ # Android 工程
ios/ # iOS 工程
assets/ # 图片等资源