del md
This commit is contained in:
211
开发进度.md
211
开发进度.md
@@ -1,211 +0,0 @@
|
||||
# AutoTime Tracker 开发进度
|
||||
|
||||
## 📊 总体进度
|
||||
|
||||
**当前阶段:** Phase 1 - MVP 开发
|
||||
**完成度:** 98%
|
||||
|
||||
---
|
||||
|
||||
## ✅ 已完成功能
|
||||
|
||||
### Week 1-2: 项目搭建 ✅
|
||||
- [x] Flutter 项目初始化
|
||||
- [x] 数据库设计
|
||||
- [x] UI/UX 设计
|
||||
- [x] 基础架构搭建
|
||||
|
||||
### Week 5-6: 统计与可视化 ✅
|
||||
- [x] 数据统计模块
|
||||
- [x] 图表组件
|
||||
- [x] 主界面开发
|
||||
|
||||
### Week 3-4: 核心功能开发 ✅
|
||||
- [x] 数据存储模块(SQLite)
|
||||
- [x] 数据库初始化
|
||||
- [x] 表结构创建
|
||||
- [x] 索引优化
|
||||
- [x] 数据访问层(DAO)
|
||||
- [x] AppUsageDao - 应用使用记录
|
||||
- [x] DailyStatsDao - 每日统计
|
||||
- [x] 分类服务(CategoryService)
|
||||
- [x] 预设分类规则
|
||||
- [x] 自定义分类管理
|
||||
- [x] 分类查询
|
||||
- [x] 统计服务(StatisticsService)
|
||||
- [x] 今日统计计算
|
||||
- [x] 效率评分算法
|
||||
- [x] 专注度评分算法
|
||||
- [x] 周/月统计
|
||||
- [x] 状态管理(Riverpod)
|
||||
- [x] StatisticsProvider
|
||||
- [x] TodayStatsProvider
|
||||
- [x] WeekStatsProvider
|
||||
- [x] TopAppsProvider
|
||||
- [x] 界面集成真实数据
|
||||
- [x] TodayScreen 使用数据库数据
|
||||
- [x] 加载状态处理
|
||||
- [x] 错误处理
|
||||
- [x] 时间追踪服务(Platform Channel)✅
|
||||
- [x] Flutter 侧接口实现
|
||||
- [x] iOS Screen Time API 集成
|
||||
- [x] Android Usage Stats API 集成
|
||||
- [x] 权限管理
|
||||
- [x] 数据同步逻辑
|
||||
- [x] 后台同步服务
|
||||
- [x] 权限引导界面
|
||||
|
||||
---
|
||||
|
||||
## 🚧 进行中功能
|
||||
|
||||
无
|
||||
|
||||
---
|
||||
|
||||
## 📋 待开发功能
|
||||
|
||||
### 优先级高
|
||||
- [ ] **原生 API 实际实现**
|
||||
- [ ] iOS Screen Time API 完整实现(需要真实设备测试)
|
||||
- [ ] Android Usage Stats API 完整实现(需要真实设备测试)
|
||||
|
||||
### 优先级中
|
||||
- [ ] **测试与优化**
|
||||
- [ ] 单元测试
|
||||
- [ ] 性能优化
|
||||
- [ ] Bug 修复
|
||||
|
||||
- [ ] **上架准备**
|
||||
- [ ] 应用图标和启动画面
|
||||
- [ ] 应用商店资料
|
||||
- [ ] 隐私政策文档
|
||||
|
||||
### 优先级低(Phase 2)
|
||||
- [ ] Widget 小组件
|
||||
- [ ] 高级统计分析
|
||||
- [ ] 机器学习分类
|
||||
|
||||
---
|
||||
|
||||
## 📁 已创建文件
|
||||
|
||||
### 数据库层
|
||||
- ✅ `lib/database/database_helper.dart` - 数据库初始化
|
||||
- ✅ `lib/database/app_usage_dao.dart` - 应用使用记录 DAO
|
||||
- ✅ `lib/database/daily_stats_dao.dart` - 每日统计 DAO
|
||||
- ✅ `lib/database/time_goal_dao.dart` - 时间目标 DAO
|
||||
|
||||
### 服务层
|
||||
- ✅ `lib/services/category_service.dart` - 分类服务
|
||||
- ✅ `lib/services/statistics_service.dart` - 统计服务
|
||||
- ✅ `lib/services/time_tracking_service.dart` - 时间追踪服务
|
||||
- ✅ `lib/services/background_sync_service.dart` - 后台同步服务
|
||||
- ✅ `lib/services/export_service.dart` - 数据导出服务
|
||||
|
||||
### 状态管理
|
||||
- ✅ `lib/providers/statistics_provider.dart` - 统计相关 Provider
|
||||
- ✅ `lib/providers/time_tracking_provider.dart` - 时间追踪 Provider
|
||||
- ✅ `lib/providers/background_sync_provider.dart` - 后台同步 Provider
|
||||
|
||||
### 界面层
|
||||
- ✅ `lib/screens/today_screen.dart` - 已集成真实数据
|
||||
- ✅ `lib/screens/permission_screen.dart` - 权限引导界面
|
||||
- ✅ `lib/screens/category_management_screen.dart` - 分类管理界面
|
||||
- ✅ `lib/screens/goal_setting_screen.dart` - 目标设定界面
|
||||
- ✅ `lib/screens/export_data_screen.dart` - 数据导出界面
|
||||
- ✅ `lib/screens/data_privacy_screen.dart` - 数据与隐私页面
|
||||
- ✅ `lib/screens/about_screen.dart` - 关于页面
|
||||
|
||||
### 原生层
|
||||
- ✅ `ios/Runner/TimeTrackingPlugin.swift` - iOS Platform Channel
|
||||
- ✅ `ios/Runner/AppDelegate.swift` - iOS 插件注册
|
||||
- ✅ `android/app/src/main/kotlin/com/autotime/tracker/TimeTrackingPlugin.kt` - Android Platform Channel
|
||||
- ✅ `android/app/src/main/AndroidManifest.xml` - Android 权限配置
|
||||
|
||||
---
|
||||
|
||||
## 🔧 技术实现详情
|
||||
|
||||
### 数据库结构
|
||||
|
||||
**app_usage 表:**
|
||||
- 应用使用记录
|
||||
- 索引:start_time, category, package_name
|
||||
|
||||
**daily_stats 表:**
|
||||
- 每日统计数据
|
||||
- 索引:date
|
||||
|
||||
**app_category 表:**
|
||||
- 应用分类规则
|
||||
- 索引:package_name
|
||||
|
||||
**time_goal 表:**
|
||||
- 时间目标设定
|
||||
|
||||
### 核心算法
|
||||
|
||||
**效率评分算法:**
|
||||
- 工作时间占比:40%
|
||||
- 学习时间占比:30%
|
||||
- 娱乐时间占比(越低越好):30%
|
||||
|
||||
**专注度评分算法:**
|
||||
- 基于应用切换频率
|
||||
- 每小时切换 < 10 次 = 100分
|
||||
- 每小时切换 > 50 次 = 0分
|
||||
|
||||
---
|
||||
|
||||
## 🐛 已知问题
|
||||
|
||||
1. **iOS Screen Time API 实现**
|
||||
- 当前提供了基本框架
|
||||
- 实际 API 使用方式可能需要根据 Apple 文档调整
|
||||
- 某些系统应用可能无法追踪
|
||||
|
||||
2. **Android 权限授予**
|
||||
- 需要用户手动在系统设置中授予权限
|
||||
- 应用无法直接请求权限
|
||||
- 需要引导用户到设置页面
|
||||
|
||||
3. **后台同步限制**
|
||||
- iOS 和 Android 都对后台运行有严格限制
|
||||
- 后台同步可能被系统终止
|
||||
- 建议使用系统提供的后台任务机制
|
||||
|
||||
---
|
||||
|
||||
## 📝 下一步计划
|
||||
|
||||
### 立即任务
|
||||
1. **完善时间追踪服务**
|
||||
- 优化 iOS Screen Time API 实现
|
||||
- 完善错误处理
|
||||
- 添加重试机制
|
||||
|
||||
2. **完善界面功能**
|
||||
- 分类管理页面
|
||||
- 目标设定页面
|
||||
- 数据导出功能
|
||||
|
||||
3. **测试和优化**
|
||||
- 添加单元测试
|
||||
- 性能测试
|
||||
- 用户体验优化
|
||||
- 后台同步优化(WorkManager/Background Tasks)
|
||||
|
||||
---
|
||||
|
||||
## 📈 进度统计
|
||||
|
||||
- **总任务数:** 36
|
||||
- **已完成:** 35 (97%)
|
||||
- **进行中:** 0 (0%)
|
||||
- **待开始:** 1 (3%)
|
||||
|
||||
---
|
||||
|
||||
**最后更新:** 2024-11-13
|
||||
|
||||
116
快速启动指南.md
116
快速启动指南.md
@@ -1,116 +0,0 @@
|
||||
# AutoTime Tracker - 快速启动指南
|
||||
|
||||
## 🚀 立即运行
|
||||
|
||||
### 1. 安装依赖
|
||||
|
||||
```bash
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
### 2. 运行项目
|
||||
|
||||
#### Windows 用户(推荐)
|
||||
|
||||
**方式 1:使用运行脚本(最简单)**
|
||||
```bash
|
||||
# 双击运行 运行.bat 或在 PowerShell 中运行
|
||||
.\运行.ps1
|
||||
```
|
||||
|
||||
**方式 2:直接运行命令**
|
||||
```bash
|
||||
# Windows 桌面应用
|
||||
flutter run -d windows
|
||||
|
||||
# Web 服务器模式(推荐,兼容性最好)
|
||||
flutter run -d web-server
|
||||
# 运行后会显示 URL,在浏览器中打开即可
|
||||
|
||||
# Edge 浏览器
|
||||
flutter run -d edge
|
||||
```
|
||||
|
||||
#### Mac/Linux 用户
|
||||
|
||||
```bash
|
||||
# iOS 模拟器
|
||||
flutter run -d ios
|
||||
|
||||
# Android 模拟器/设备
|
||||
flutter run -d android
|
||||
|
||||
# 或指定设备
|
||||
flutter devices # 查看可用设备
|
||||
flutter run -d <device-id>
|
||||
```
|
||||
|
||||
#### 启动 Android 模拟器(无需 Android Studio)
|
||||
|
||||
```bash
|
||||
# 1. 查看可用模拟器
|
||||
flutter emulators
|
||||
|
||||
# 2. 启动模拟器
|
||||
flutter emulators --launch <emulator-id>
|
||||
|
||||
# 3. 运行应用
|
||||
flutter run
|
||||
```
|
||||
|
||||
**提示:** 如果还没有模拟器,可以使用 Android Studio 创建,或者使用物理设备(启用 USB 调试后直接 `flutter run`)。
|
||||
|
||||
## 📱 界面说明
|
||||
|
||||
### 主界面(Today)
|
||||
- **总时长显示**:大字体显示今日总使用时长
|
||||
- **效率评分**:基于时间分配的效率评分(0-100%)
|
||||
- **分类饼图**:可视化展示各分类时间分布
|
||||
- **Top 应用**:显示今日使用时间最长的 5 个应用
|
||||
|
||||
### 统计界面(Stats)
|
||||
- **时间趋势图**:折线图展示每日总时长趋势
|
||||
- **分类对比图**:堆叠柱状图对比各分类时间
|
||||
- **应用详情**:查看每个应用的详细使用数据
|
||||
|
||||
### 设置界面(Settings)
|
||||
- **应用分类管理**:管理应用分类规则
|
||||
- **时间目标设定**:设置每日时间目标
|
||||
- **数据与隐私**:数据管理、导出、删除
|
||||
- **升级到 Pro**:查看高级功能
|
||||
|
||||
|
||||
## 🐛 常见问题
|
||||
|
||||
### Q: 运行报错 "No devices found"
|
||||
**A:** 确保已启动模拟器或连接设备
|
||||
```bash
|
||||
# iOS
|
||||
open -a Simulator
|
||||
|
||||
# Android
|
||||
flutter emulators --launch <emulator-id>
|
||||
```
|
||||
|
||||
### Q: 依赖安装失败
|
||||
**A:** 检查网络连接,或使用国内镜像
|
||||
```bash
|
||||
export PUB_HOSTED_URL=https://pub.flutter-io.cn
|
||||
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
### Q: 图表不显示
|
||||
**A:** 确保已安装 fl_chart 依赖
|
||||
```bash
|
||||
flutter pub get
|
||||
flutter clean
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
- [README.md](./README.md) - 项目概览
|
||||
- [开发进度.md](./开发进度.md) - 开发进度和待办事项
|
||||
- [真实数据测试指南.md](./真实数据测试指南.md) - 真实设备测试说明
|
||||
|
||||
357
真实数据测试指南.md
357
真实数据测试指南.md
@@ -1,357 +0,0 @@
|
||||
# 真实数据测试指南
|
||||
|
||||
## 📱 测试真实数据需要什么?
|
||||
|
||||
### ✅ 必须条件
|
||||
|
||||
1. **真实手机设备**(Android 或 iOS)
|
||||
- 模拟器无法获取真实的系统使用数据
|
||||
- Web 平台不支持系统 API
|
||||
|
||||
2. **安装应用到手机**
|
||||
- 需要将应用安装到真实设备上
|
||||
- 通过 USB 连接或构建 APK/IPA 安装
|
||||
|
||||
3. **授予系统权限**
|
||||
- Android: "使用情况访问权限" (Usage Access)
|
||||
- iOS: Screen Time API 权限
|
||||
|
||||
---
|
||||
|
||||
## 🚀 测试步骤
|
||||
|
||||
### 方式 1:USB 连接调试(推荐,最简单)
|
||||
|
||||
#### Android 设备
|
||||
|
||||
```bash
|
||||
# 1. 在手机上启用开发者选项和 USB 调试
|
||||
# 设置 → 关于手机 → 连续点击"版本号"7次
|
||||
# 设置 → 系统 → 开发者选项 → 启用"USB 调试"
|
||||
|
||||
# 2. 用 USB 连接手机到电脑
|
||||
|
||||
# 3. 检查设备连接
|
||||
flutter devices
|
||||
|
||||
# 4. 运行应用到手机
|
||||
flutter run -d <device-id>
|
||||
|
||||
# 或者直接运行(会自动选择设备)
|
||||
flutter run
|
||||
```
|
||||
|
||||
#### iOS 设备(Mac 用户)
|
||||
|
||||
```bash
|
||||
# 1. 在 iPhone 上:设置 → 通用 → VPN与设备管理 → 信任电脑
|
||||
|
||||
# 2. 连接 iPhone 到 Mac
|
||||
|
||||
# 3. 运行应用
|
||||
flutter run -d <device-id>
|
||||
```
|
||||
|
||||
**优点:**
|
||||
- ✅ 实时调试
|
||||
- ✅ 支持热重载
|
||||
- ✅ 可以看到日志输出
|
||||
- ✅ 无需手动安装
|
||||
|
||||
---
|
||||
|
||||
### 方式 2:构建安装包(适合分享测试)
|
||||
|
||||
#### Android APK
|
||||
|
||||
```bash
|
||||
# 1. 构建 APK
|
||||
flutter build apk
|
||||
|
||||
# 2. APK 文件位置
|
||||
# build/app/outputs/flutter-apk/app-release.apk
|
||||
|
||||
# 3. 传输到手机并安装
|
||||
# - 通过 USB 传输
|
||||
# - 通过云盘/邮件发送
|
||||
# - 通过 ADB 安装:adb install build/app/outputs/flutter-apk/app-release.apk
|
||||
```
|
||||
|
||||
#### Android App Bundle(用于 Google Play)
|
||||
|
||||
```bash
|
||||
flutter build appbundle
|
||||
# 输出:build/app/outputs/bundle/release/app-release.aab
|
||||
```
|
||||
|
||||
#### iOS(需要 Apple 开发者账号)
|
||||
|
||||
```bash
|
||||
# 开发版本
|
||||
flutter build ios
|
||||
|
||||
# 或者使用 Xcode 构建和签名
|
||||
```
|
||||
|
||||
**优点:**
|
||||
- ✅ 可以分享给他人测试
|
||||
- ✅ 不需要连接电脑
|
||||
- ✅ 可以测试真实使用场景
|
||||
|
||||
---
|
||||
|
||||
## 🔐 权限设置
|
||||
|
||||
### Android 权限设置
|
||||
|
||||
应用首次运行时,需要引导用户授予权限:
|
||||
|
||||
1. **应用内权限请求**
|
||||
- 应用会自动显示权限引导界面
|
||||
- 点击"去设置"按钮
|
||||
|
||||
2. **系统设置页面**
|
||||
- 自动跳转到"使用情况访问权限"设置
|
||||
- 找到 "AutoTime Tracker"
|
||||
- 开启"允许使用情况访问"
|
||||
|
||||
3. **验证权限**
|
||||
- 返回应用
|
||||
- 应用会自动检测权限状态
|
||||
- 如果已授予,进入主界面
|
||||
|
||||
**手动设置路径:**
|
||||
```
|
||||
设置 → 应用 → 特殊应用访问 → 使用情况访问权限 → AutoTime Tracker → 开启
|
||||
```
|
||||
|
||||
### iOS 权限设置
|
||||
|
||||
1. **应用内权限请求**
|
||||
- 应用会自动请求 Screen Time API 权限
|
||||
- 用户需要明确授权
|
||||
|
||||
2. **系统设置**
|
||||
- 设置 → 屏幕使用时间 → 应用限制
|
||||
- 确保应用有访问权限
|
||||
|
||||
---
|
||||
|
||||
## 📊 测试真实数据
|
||||
|
||||
### 1. 安装并运行应用
|
||||
|
||||
```bash
|
||||
# 连接设备后
|
||||
flutter run
|
||||
```
|
||||
|
||||
### 2. 授予权限
|
||||
|
||||
- 按照应用内的引导完成权限设置
|
||||
|
||||
### 3. 使用手机一段时间
|
||||
|
||||
- 正常使用手机上的各种应用
|
||||
- 系统会自动记录使用数据
|
||||
|
||||
### 4. 查看数据
|
||||
|
||||
- 打开应用
|
||||
- 查看"Today"页面,应该能看到真实的使用数据
|
||||
- 查看"Stats"页面,查看历史统计
|
||||
|
||||
### 5. 验证功能
|
||||
|
||||
- ✅ 应用使用时间是否正确
|
||||
- ✅ 分类是否正确
|
||||
- ✅ 统计数据是否准确
|
||||
- ✅ 图表是否正常显示
|
||||
|
||||
---
|
||||
|
||||
## 🧪 测试场景
|
||||
|
||||
### 场景 1:基础功能测试
|
||||
|
||||
1. 安装应用
|
||||
2. 授予权限
|
||||
3. 使用手机 1-2 小时
|
||||
4. 打开应用查看数据
|
||||
|
||||
### 场景 2:分类测试
|
||||
|
||||
1. 使用不同类型的应用(工作、娱乐、社交等)
|
||||
2. 检查分类是否正确
|
||||
3. 手动调整分类(设置 → 应用分类)
|
||||
4. 验证分类是否生效
|
||||
|
||||
### 场景 3:目标测试
|
||||
|
||||
1. 设置每日总时长目标
|
||||
2. 设置分类时间限制
|
||||
3. 使用手机一段时间
|
||||
4. 检查目标完成情况
|
||||
|
||||
### 场景 4:数据导出测试
|
||||
|
||||
1. 使用应用一段时间,积累数据
|
||||
2. 进入设置 → 数据导出
|
||||
3. 导出 CSV 和统计报告
|
||||
4. 验证导出文件内容
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
### 数据延迟
|
||||
|
||||
- **Android**: 使用情况数据可能有几分钟延迟
|
||||
- **iOS**: Screen Time 数据更新较慢
|
||||
- **建议**: 使用手机一段时间后再查看数据
|
||||
|
||||
### 权限限制
|
||||
|
||||
- **Android**: 某些系统应用可能无法追踪
|
||||
- **iOS**: Screen Time API 有严格限制
|
||||
- **建议**: 测试时使用常见的第三方应用
|
||||
|
||||
### 后台限制
|
||||
|
||||
- 应用需要在后台运行才能持续追踪
|
||||
- 某些手机系统会限制后台运行
|
||||
- **建议**: 将应用添加到"白名单"或"不受限制"
|
||||
|
||||
### 电池优化
|
||||
|
||||
- 某些手机会自动优化电池,可能影响后台追踪
|
||||
- **建议**: 在电池设置中,将应用设置为"不受限制"
|
||||
|
||||
---
|
||||
|
||||
## 🔧 调试技巧
|
||||
|
||||
### 查看日志
|
||||
|
||||
```bash
|
||||
# 运行应用时查看日志
|
||||
flutter run
|
||||
|
||||
# 或者单独查看日志
|
||||
flutter logs
|
||||
```
|
||||
|
||||
### 检查权限状态
|
||||
|
||||
在应用中:
|
||||
- 设置 → 权限设置
|
||||
- 查看权限是否已授予
|
||||
|
||||
### 验证数据同步
|
||||
|
||||
1. 使用手机一段时间
|
||||
2. 打开应用
|
||||
3. 点击刷新按钮
|
||||
4. 查看数据是否更新
|
||||
|
||||
---
|
||||
|
||||
## 📝 测试清单
|
||||
|
||||
### 安装测试
|
||||
- [ ] 应用可以正常安装
|
||||
- [ ] 应用可以正常启动
|
||||
- [ ] 没有崩溃或错误
|
||||
|
||||
### 权限测试
|
||||
- [ ] 权限引导界面正常显示
|
||||
- [ ] 可以跳转到系统设置
|
||||
- [ ] 权限授予后应用可以正常使用
|
||||
|
||||
### 数据追踪测试
|
||||
- [ ] 可以获取应用使用数据
|
||||
- [ ] 数据时间戳正确
|
||||
- [ ] 应用名称显示正确
|
||||
- [ ] 使用时长计算准确
|
||||
|
||||
### 分类测试
|
||||
- [ ] 自动分类正确
|
||||
- [ ] 可以手动修改分类
|
||||
- [ ] 分类修改后生效
|
||||
|
||||
### 统计测试
|
||||
- [ ] 今日统计正确
|
||||
- [ ] 周统计正确
|
||||
- [ ] 图表显示正常
|
||||
- [ ] 效率评分计算正确
|
||||
|
||||
### 功能测试
|
||||
- [ ] 目标设置功能正常
|
||||
- [ ] 数据导出功能正常
|
||||
- [ ] 设置保存正常
|
||||
|
||||
---
|
||||
|
||||
## 🎯 快速测试流程
|
||||
|
||||
```bash
|
||||
# 1. 连接手机
|
||||
flutter devices
|
||||
|
||||
# 2. 运行应用
|
||||
flutter run
|
||||
|
||||
# 3. 在手机上:
|
||||
# - 授予权限
|
||||
# - 使用手机 10-15 分钟
|
||||
# - 打开应用查看数据
|
||||
|
||||
# 4. 验证数据是否正确显示
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 提示
|
||||
|
||||
1. **首次测试建议使用物理设备**,模拟器无法获取真实系统数据
|
||||
2. **测试前确保手机有足够的电量**,避免测试中断
|
||||
3. **建议测试多种应用类型**,验证分类功能
|
||||
4. **测试时间建议 1-2 小时**,积累足够的数据
|
||||
5. **可以导出数据验证准确性**,检查 CSV 文件内容
|
||||
|
||||
---
|
||||
|
||||
## 🐛 常见问题
|
||||
|
||||
### Q: 应用显示"无数据"
|
||||
|
||||
**A:**
|
||||
- 检查权限是否已授予
|
||||
- 等待几分钟,数据可能有延迟
|
||||
- 使用一些应用,确保有使用记录
|
||||
|
||||
### Q: 某些应用无法追踪
|
||||
|
||||
**A:**
|
||||
- 系统应用可能无法追踪(这是系统限制)
|
||||
- 某些受保护的应用可能无法追踪
|
||||
- 这是正常现象
|
||||
|
||||
### Q: 数据不准确
|
||||
|
||||
**A:**
|
||||
- 检查时间同步是否正确
|
||||
- 验证应用分类是否正确
|
||||
- 检查是否有重复记录
|
||||
|
||||
### Q: 应用在后台被杀死
|
||||
|
||||
**A:**
|
||||
- 将应用添加到电池优化白名单
|
||||
- 允许应用后台运行
|
||||
- 检查系统后台限制设置
|
||||
|
||||
---
|
||||
|
||||
**总结:测试真实数据需要安装到真实手机设备上,通过 USB 连接运行是最简单的方式。** 📱
|
||||
|
||||
Reference in New Issue
Block a user