很多 USB 线外表一样,内部只有电源线,没有数据线芯,插上只能充电,电脑完全识别不到。
一、怎么快速判断是不是线的问题
换一根确定能传数据的线(比如原装线,或平时能连电脑传照片的线),然后:
- 手机通知栏:下拉,看有没有"USB 连接方式"或"USB 用于"的选项。如果有,能选"传输文件",说明线有数据功能。
- 电脑"此电脑":看有没有多出一个手机图标(如 HUAWEI 手机)。
- 设备管理器:看"便携式设备"或"其他设备"里有没有新东西。
如果换线后上面任何一处有变化,那就是原来的线只能充电。
二、如果换了线还是不行
再检查:
- 手机 USB 调试 和 "仅充电模式下允许 ADB 调试" 都开了吗?
- 插上后手机有没有弹"是否允许 USB 调试?"------有就勾"一律允许"并确定。
- 电脑驱动装了吗?(设备管理器有没有黄色感叹号)
三、换线后请跑一下
powershell
adb kill-server
adb start-server
adb devices
- 出现
XXXXXX device→ 成功,可以抓日志了。 - 出现
unauthorized→ 手机上点"允许"。 - 还是空白 → 驱动或调试设置问题,告诉我设备管理器的情况。
请先换线试一次,把 adb devices 结果发我。 这是目前最可能的一步。
好消息:设备已被识别。 unauthorized 说明电脑看到了手机,只是手机端还没授权。
一、解决 unauthorized(30 秒)
看手机屏幕,现在应该弹出了一个窗口:
是否允许 USB 调试?
计算机 RSA 密钥指纹:XX:XX:XX:...
操作:
- ✅ 勾选 "一律允许使用这台计算机进行调试"
- 点 "允许"
如果没弹窗,按下面顺序试:
-
拔掉 USB → 重新插上
-
手机:开发者选项里关掉"USB 调试"再打开
-
电脑执行 :
powershelladb kill-server adb start-server adb devices
二、验证成功
powershell
adb devices
预期:
List of devices attached
2UCUT23C22044781 device ← 从 unauthorized 变成 device
三、然后抓日志
powershell
adb logcat -c
# 现在在手机上操作:竖屏 → 前置录 3 秒 → 切后置 → 录 3 秒 → 停止
adb logcat -d > d:\log_full.txt
Get-Content d:\log_full.txt | Select-String "SegmentRecorder|NativeCamCtrl|Transcoder|FATAL|AndroidRuntime" | Out-File d:\log_filtered.txt
把 d:\log_filtered.txt 贴我。
四、⚠️ 若 logcat 抓不到日志
某些华为机型默认关闭了 logcat 输出,需要:
- 开发者选项 → 日志记录器缓冲区大小 → 改成 "4MB"或更大
- 开发者选项 → 启用日志记录器缓冲 → 打开(若有此选项)
按禅规第1条:原因确认------release APK 的 debugPrint 被编译优化裁掉了,logcat 抓不到。 走 debug 模式。
log_filtered.txt 是 0 字节,说明过滤关键词一个都没匹配到。两种可能:
- 装的是 release APK ,
debugPrint被优化掉了 - 日志用了其他 TAG
一、先诊断:用更宽松的关键词
逐条执行,看哪条有输出:
powershell
Get-Content d:\log_full.txt | Select-String "flutter" | Measure-Object | Select-Object Count
powershell
Get-Content d:\log_full.txt | Select-String "shoot" | Measure-Object | Select-Object Count
powershell
Get-Content d:\log_full.txt | Select-String "FFmpeg|ffmpeg" | Measure-Object | Select-Object Count
powershell
Get-Content d:\log_full.txt | Select-String "dagou|Dagou" | Measure-Object | Select-Object Count
每条输出的 Count 数字,全贴我。
二、如果 4 条全 0
说明 release APK 的 debugPrint 全被裁掉,logcat 抓不到。
解决方案 :用 flutter run 跑一次(debug 模式,会实时输出 Dart 日志)。
步骤:
-
手机连 USB(已连接)
-
电脑执行:
powershellflutter clean flutter pub get flutter run -
终端会显示"Installing..."、"Syncing files...",最后出现:
Flutter run key commands. ...这就是 debug 模式 ,
debugPrint会实时输出到这个终端窗口。 -
手机操作:竖屏 → 前置录 3 秒 → 切后置 → 录 3 秒 → 停止
-
终端里 会实时刷出
[Transcoder]、[shoot]、SegmentRecorder等日志 -
复制粘贴终端里关键几行给我
-
按
q退出
三、请你回我
先做第 1 步的 4 条命令,把 Count 数字发我。
- 若某条 > 0 → 我知道该用哪个关键词抓,直接给你过滤命令
- 若全 0 → 我们走第 2 步(
flutter run)
按禅规第1条:先诊断日志为什么空,再决定抓法。
一、用 flutter run 跑一次(debug 模式)
步骤 1:确保手机连着电脑(已连接)
步骤 2:执行
powershell
flutter run
等待 1~3 分钟,会出现:
Launching lib\main.dart on ...
Running Gradle task 'assembleDebug'...
...
Flutter run key commands.
r Hot reload.
R Hot restart.
q Quit.
看到这行说明 debug 模式启动成功。
二、同时开第二个 PowerShell 窗口抓 logcat
第一个窗口 :跑 flutter run(保持运行,别关)
第二个窗口:执行
powershell
adb logcat -c
adb logcat | Select-String "flutter|Transcoder|shoot|SegmentRecorder|NativeCamCtrl"
这个窗口会实时刷日志。
三、手机操作
在两个窗口都开着的情况下,在手机上操作:
- 打开 App
- 进拍摄页
- 竖屏 → 前置录 3 秒
- 切后置 → 录 3 秒
- 停止
四、抓日志
第二个窗口 里会刷出大量日志。复制粘贴关键几段给我:
我要的 4 类
1. Transcoder 相关(Dart 侧转码)
[Transcoder] hint=...
[Transcoder] success / failed
2. FFmpeg 输出(若失败,可能一大段)
ffmpeg version ...
Input #0 ...
Stream #0:0 ...
Output #0 ...
3. SegmentRecorder 相关(Native 合并)
SegmentRecorder: prepareSegment: ... hint=...
SegmentRecorder: mergeInternal: muxer started, hint=...
4. 崩溃(若有)
FATAL EXCEPTION
五、如果日志太长不好复制
改抓文件:
第二个窗口:
powershell
adb logcat -c
adb logcat > d:\log_live.txt
操作完手机后 ,在第二个窗口按 Ctrl+C 停止。
然后:
powershell
Get-Content d:\log_live.txt | Select-String "Transcoder|shoot|SegmentRecorder|NativeCamCtrl|FATAL" | Out-File d:\log_key.txt
把 d:\log_key.txt 内容贴我。
六、关键提醒
⚠️ flutter run 会重装 App ,用 debug 签名。若你之前装的是 release APK,会被覆盖 。测试完后想恢复 release 版,重新 flutter install 或重装 APK 即可。
七、请你回我
flutter run能否启动成功? (看到Flutter run key commands那行)- 手机上操作后,日志里
Transcoder/shoot/SegmentRecorder相关行(贴我)
按禅规第1条:这次 debug 模式一定能抓到日志。有了日志,方向问题就能精准定位。