如何将调试器附加到Wear OS模拟器或手表并调试Complication Provider
Wear OS Complication Provider 调试操作指南
核心问题原因
Complication Provider 属于系统按需拉起的组件,只有当表盘请求数据、系统触发更新时才会启动对应的进程,未触发时进程不存在,自然无法附加调试、断点处于未激活状态。如果Provider在Manifest中配置了独立android:process属性,还会运行在和应用主进程隔离的独立进程中,常规附加主进程的操作无法命中代码。
前置配置校验
- 确认Wear模块build.gradle的debug构建变体开启了可调试配置:
debuggable true,不要选错release构建变体部署。 - 开启Wear设备/模拟器的开发者选项,打开USB调试、Wear OS调试开关。
- 检查
AndroidManifest.xml中Complication Provider的注册配置,记录android:process属性值(如果存在),无配置时Provider默认运行在Wear模块的主进程,进程名同模块applicationId。
标准调试步骤
- 先正常将应用部署到Wear设备/模拟器
- 手动在表盘界面添加你需要调试的Complication组件,触发系统首次拉起Provider进程
- 执行adb命令手动触发一次数据更新,确保进程持续存活:
adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation 'update-complications' --es pkg [替换为你的Wear模块包名] - 点击Android Studio顶部的「Attach Debugger to Android Process」按钮,勾选弹窗右上角的「Show all processes」,找到对应Provider进程选中后确认附加
- 此时对应代码行的断点会显示激活对勾,再次触发Complication更新即可命中断点
无效果终极解决方案
在需要调试的代码块(如onComplicationUpdate方法)第一行添加代码:android.os.Debug.waitForDebugger();
部署应用后触发Provider启动,进程会自动阻塞等待调试器附加,附加完成后会自动运行到后续代码,100%可命中后续断点,调试完成后记得删除该段代码,避免线上版本阻塞运行。
内容的提问来源于stack exchange,提问作者Jason Shuler
相关产品推荐
相关产品推荐

