mynote mobile
- E:\uninote\mynote-mobile
- codex://threads/01a0e1c3-2909-74b0-918b-a569f17c2f0d
flutter
- codex://threads/01a0e0d3-4c80-7b10-84e3-ec3c8e50014a
- codex://threads/01a0e17b-a100-7371-b81c-e58df73685e9
- codex://threads/01a0deb3-6b89-75d0-bb79-d62ed461ae17
flutter clean
flutter pub get
重新构建 Windows
flutter --version
flutter doctor
adb version
sdkmanager --sdk_root=D:\Android\Sdk "system-images;android-35;default;x86_64"
flutter run
flutter build & install
flutter build apk --release && adb -s 4ZU0225916013604 install -r build\app\outputs\flutter-apk\app-release.apk && cp "build\app\outputs\flutter-apk\app-release.apk" x:\fe\tmp2\app-release.apk
flutter build apk --release
flutter build apk --release ; adb -s emulator-5554 install -r build\app\outputs\flutter-apk\app-release.apk
flutter build apk --release ; adb -s 4ZU0225916013604 install -r build\app\outputs\flutter-apk\app-release.apk
# xiaomi
flutter build apk --release ; adb -s 9e76c53d install -r build\app\outputs\flutter-apk\app-release.apk
flutter debug
- codex://threads/01a0e6f2-4954-7430-a77f-519da2a61866
真机调试
flutter devices
flutter run -d <设备ID>
flutter build apk --release 在 Gradle 启动阶段失败,报错为 Unable to establish loopback connection
- codex://threads/01a0f119-c0b7-7d52-8474-1b9dad9f1570
- Completion Workflow
- 已写入 AGENTS.md,后续构建直接设置 socket 临时目录,不再因历史故障跳过打包或重复询问。提交:
ea64958。- 找到回环连接故障的一个可行绕法:把 Java 的 Unix socket 临时目录指向项目构建目录后,
Selector.open()自检已通过。我会用这个仅对当前进程生效的配置重新构建,继续真机验证。
- 找到回环连接故障的一个可行绕法:把 Java 的 Unix socket 临时目录指向项目构建目录后,
avdmanager 模拟器 avd emulators
avdmanager create
avdmanager create avd -n t2 -k "system-images;android-35;default;x86_64"
卡死、重启、黑屏
- https://chat.deepseek.com/a/chat/s/c19dc65f-9d4f-4cd7-b42b-d5d49cc110de
- codex://threads/01a186c9-745d-7f50-a1f7-7a1a47c2bc85
adb kill-server
adb start-server
adb -s emulator-5554 emu kill
D:\Android\Sdk\emulator\emulator.exe -avd t1 -no-snapshot-load -no-snapshot-save
fastboot.forceColdBoot=yes
fastboot.forceFastBoot=no
如何在模拟器测试刚才创建的 app-release.apk
codex://threads/01a0e0d3-4c80-7b10-84e3-ec3c8e50014a
flutter emulators
flutter emulators --launch flutter_api35
flutter emulators --launch t1
adb devices
adb install -r "build\app\outputs\flutter-apk\app-release.apk"
flutter clean
flutter pub get
flutter build apk --release && adb -s 4ZU0225916013604 install -r build\app\outputs\flutter-apk\app-release.apk
模拟器 size 修改
https://chat.deepseek.com/a/chat/s/85c0ad64-c3b9-4f9d-9dc2-dc55e34cddaa
- 如果必须修改现有 AVD 的默认分辨率,可以手动编辑配置文件:找到
~/.android/avd/<设备名>.avd/config.ini,修改hw.lcd.width、hw.lcd.height和hw.lcd.density。不过手动改配置容易出问题,建议优先通过 Android Studio 的 AVD Manager 界面操作。
adb
adb pull /sdcard/mynote-e01-e04.xml
adb -s emulator-5554 emu kill
adb -s emulator-5554 emu avd name
日志 log
日志用bash解决乱码问题:
- adb logcat -v time |grep mynote.tree
UI 测试
- codex://threads/01a16c34-e7a7-7361-af7f-3fc2f5d7882a 补充编辑与预览 UI 测试
- codex://threads/01a16c11-027d-78f0-a524-e4811e49dfcd 重构 UI 测试结构
- codex://threads/01a16b26-41f1-7f52-bb52-a84ca2adf50d 定位下拉箭头
- 类的名字不要用 用例E01E04 重构以便加入更多的用例。
- 常驻抓取 nodes。调用依赖时,自动通过 ADB 注入服务。
- 老方案:adb -s emulator-5554 shell toybox timeout -k 1 12 uiautomator dump /sdcard/mynote-e01-e04.xml
bounds="[8,24][112,52]" [left,top][right,bottom]
python test/ui/run.py
- codex://threads/01a16cf7-3151-7b42-bc2a-4208e404bdde wait_for 抽取
清理删除所有的测试生成库
- codex://threads/01a16c15-f61c-7542-bbc9-5e8a0a5d6226
- codex://threads/01a1679a-deaf-7de3-bed3-e4873f290fcb 添加删除本地仓库功能
# 加 `--dry-run` 可预览; --device 可选
py -3 test/ui/cleanup.py --device emulator-5554
新建仓库红屏处理
- codex://threads/01a16c60-44a1-7a43-858a-ab1be658615f
改为 unittest
- codex://threads/01a16c66-d404-7781-8cf2-e1af8f242a41
显示编辑差异开关定位
- codex://threads/01a17106-082b-7e72-aaf7-b29af26ccb7c
- 没有再 xml 中
如果是 Flutter Widget 测试,直接按 tooltip 定位,项目已有此测试:E:/uninote/mynote-mobile/test/note_tabs_test.dart:106。
// 开启
await tester.tap(find.byTooltip('显示编辑差异:关'));
await tester.pumpAndSettle();
expect(find.byTooltip('显示编辑差异:开'), findsOneWidget);
// 关闭
await tester.tap(find.byTooltip('显示编辑差异:开'));
await tester.pumpAndSettle();
expect(find.byTooltip('显示编辑差异:关'), findsOneWidget);
flutter testing
- codex://threads/01a16d08-93df-7a22-9258-477e666e8d7b
- testing
# 只显示失败用例
flutter test --reporter failures-only
# 指定测试文件
flutter test test/line_diff_test.dart
# 指定用例名称(子串匹配)
flutter test test/line_diff_test.dart --plain-name "matches long text line diff fixtures"
# 精确匹配完整名称,包含 group 名称
flutter test --name '^完整用例名称$'
