在Android真机上进行开发和测试,需遵循以下步骤及注意事项:
1. 启用开发者选项
- 进入系统设置 > 关于手机,连续点击“版本号”7次激活开发者模式。
- 返回设置菜单,找到“开发者选项”,开启“USB调试”和“OEM解锁”(如需刷机)。
2. 连接电脑与设备
- 使用原装USB线连接手机与开发机,避免数据传输不稳定。
- 在手机弹窗中授权电脑的调试权限,勾选“始终允许”。
3. 配置ADB环境
- 安装Android SDK Platform-Tools,确保`adb`命令可用。
- 终端输入`adb devices`,检查设备是否被识别(需显示设备序列号)。
4. 调试与日志捕获
- 使用`adb logcat`实时查看系统日志,过滤应用日志可加参数(如`adb logcat -s TAG`)。
- 通过`adb shell`直接访问设备文件系统,调试权限问题。
5. 性能分析工具
- Android Profiler(Android Studio内置)监测CPU、内存及网络占用。
- 使用Systrace生成性能报告,分析UI线程阻塞问题。
6. 多设备兼容性测试
- 利用Firebase Test Lab或云测试平台(如AWS Device Farm)覆盖不同机型。
- 手动测试时,重点关注屏幕密度、API版本及厂商ROM差异。
7. 安全注意事项
- 调试后关闭USB调试,防止未授权访问。
- 敏感数据(如密钥)避免硬编码,使用Android Keystore系统。
8. 高级调试技巧
- 无线调试:通过`adb tcpip 5555`切换至Wi-Fi连接,需同一局域网。
- 屏幕录制:`adb shell screenrecord /sdcard/demo.mp4`,支持参数调整帧率与分辨率。
9. 厂商特殊限制
- 部分厂商(如华为EMUI)需额外开启“允许HiSuite调试”。
- 小米设备需在开发者选项中关闭“MIUI优化”以避免兼容性问题。
10. 硬件特性测试
- 调用传感器(GPS、陀螺仪)时,需检查权限及硬件支持情况。
- 测试NFC功能需实体卡片模拟,或使用`adb`发送虚拟标签数据。
11. 跨平台开发调试
- Flutter项目需运行`flutter run -d
12. 逆向分析准备
- 安装Frida或Xposed框架进行动态注入,需Root权限。
- 静态分析可使用Apktool反编译APK,研究资源及Smali代码。
13. 持续集成(CI)集成
- 配置Jenkins或GitHub Actions,通过ADB命令自动安装APK并运行测试。
14. 设备管理命令
- `adb reboot`重启设备,`adb install -r`覆盖安装应用。
- 卸载系统预装应用需Root后执行`adb shell pm uninstall --user 0
15. 备份与恢复
- 使用`adb backup`导出应用数据,`adb restore`恢复时需注意Androi本兼容性。
16. 深度优化建议
- 分析ANR日志(`/data/anr/traces.txt`)定位主线程阻塞。
- 监控Binder调用频率,减少跨进程通信开销。
17. 厂商工具链补充
- 三星提供SmartSwitch调试桥,华为有HiSuite SDK扩展功能。
18. 网络调试配置
- 设置代理(如Charles)抓包时,需在设备Wi-Fi高级选项中手动配置代理IP及端口。
19. 多用户场景测试
- 通过`adb shell am switch-user
20. 自动化测试框架
- Espresso适合白盒测试,UI Automator可跨应用操作,两者结合覆盖完整场景。
21. 系统级问题排查
- 检查`/proc/cpuinfo`确认处理器架构,避免ABI不匹配。
- 分析`dmesg`内核日志诊断驱动异常。
22. 动态权限测试
- 使用`adb shell pm grant/revoke`模拟权限变更,验证应用健壮性。
23. 资源泄漏检测
- 结合LeakCanary与MAT工具分析内存泄漏,重点关注静态引用及Handler。
24. 跨版本兼容性
- 测试时覆盖minSdkVersion到targetSdkVersion之间的所有主要API版本。
25. 模拟极端环境
- 通过`adb emu`命令模拟电池低电量、网络延迟等场景。
26. 深度链接测试
- 使用`adb shell am start -d "scheme://host"`验证Intent过滤器配置。
27. HIDL与AIDL服务调试
- 系统开发中,`adb shell lshal`可列出所有HAL服务接口。
28. GPU渲染分析
- 启用“GPU呈现模式分析”条形图,定位渲染性能瓶颈。
29. WebView调试
- Chrome访问`chrome://inspect`,远程调试内嵌WebView内容。
30. Root设备风险提示
- 解锁Bootloader会清空数据,且部分金融类应用检测Root后拒绝运行。
31. 分屏模式适配
- 测试`onMultiWindowModeChanged`回调,确保UI在可调整大小模式下正常显示。
32. 暗黑模式测试
- 强制启用暗黑主题:`adb shell "cmd uimode night yes"`。
33. 语言与区域设置
- 快速切换语言:`adb shell am broadcast -a android.intent.action.SET_LOCALE --es lang zh_CN`。
34. 输入法调试
- 使用`adb shell ime list -a`查看可用输入法,`adb shell ime set
35. 压力测试工具
- Monkey命令示例:`adb shell monkey -p
36. 动态模块加载
- 测试Split APK时,通过`adb install-multiple`命令安装基础模块与动态功能模块。
37. JobScheduler调试
- 查看计划任务:`adb shell dumpsys jobscheduler`。
38. ContentProvider安全
- 使用`adb shell content`命令模拟外部应用访问,验证URI权限控制。
39. 深度休眠(Doze)测试
- 强制进入待机模式:`adb shell dumpsys battery unplug && adb shell am set-inactive
40. 应用签名验证
- 检查签名指纹:`adb shell pm dump
41. 多窗口生命周期
- 测试`onPause`与`onStop`在分屏模式下的触发时机。
42. HDMI输出适配
- 连接外接显示器后,检查`Configuration.uiMode`是否切换至电视模式。
43. 无障碍功能测试
- 启用TalkBack后,验证焦点顺序与内容描述是否合理。
44. 动态分辨率切换
- 修改显示密度:`adb shell wm density 320`,需重启应用生效。
45. 虚拟A/B分区设备
- OTA更新时,通过`adb shell getprop ro.virtual_ab.enabled`确认是否支持无缝更新。
46. APK签名方案选择
- v2签名需保留META-INF文件,v3签名增加轮换密钥支持。
47. 动态权限组变更
- Android 11+中,`READ_PHONE_STATE`等权限需单独申请,即使同属旧组。
48. 后台限制豁免
- 针对AlarmManager或WorkManager,申请`REQUEST_IGNORE_BATTERY_OPTIMIZATIONS`权限。
49. PendingIntent安全
- 使用`FLAG_MUTABLE`时,务必验证填充Intent的组件是否可信。
50. 结束语
真机调试涉及硬件差异、系统定制及安全策略,需结合官方文档与社区经验灵活应对。建议建立设备池覆盖主流厂商机型,长期积累兼容性解决方案。