模拟器调试Wear表盘时出现“无法更换表盘”错误求助
问题描述
克隆了一个Wear表盘项目,使用Run选项(或直接创建安装APK)时可正常运行,但使用Debug选项时出现“Cannot change watch face”错误。已完成设备配对,并遵循官方Wear调试设置步骤操作。请问哪里操作有误?是否可以在模拟器上调试表盘?

错误日志(中文翻译)
com.intellij.execution.ExecutionException: 启动表盘时出错,消息:正在广播: Intent { act=com.google.android.wearable.app.DEBUG_SURFACE flg=0x400000 (包含附加信息) } 广播完成: result=2, data="set-watchface failed. com.google.wear.services.watchfaces.active.WatchFaceChangeException: 无法更改表盘,错误代码: 4" at com.android.tools.idea.run.configuration.execution.AndroidWatchFaceConfigurationExecutor.setWatchFace(AndroidWatchFaceConfigurationExecutor.kt:82) at com.android.tools.idea.run.configuration.execution.AndroidWatchFaceConfigurationExecutor.launch(AndroidWatchFaceConfigurationExecutor.kt:69) at com.android.tools.idea.run.configuration.execution.AndroidConfigurationExecutorBase$debug$1.invokeSuspend(AndroidConfigurationExecutorBase.kt:118) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108) at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280) at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85) at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59) at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) at com.intellij.openapi.progress.CoroutinesKt$runBlockingCancellable$1.invoke(coroutines.kt:133) at com.intellij.openapi.progress.CoroutinesKt$runBlockingCancellable$1.invoke(coroutines.kt:127) at com.intellij.openapi.progress.ContextKt.prepareIndicatorThreadContext$lambda$5(context.kt:110) at com.intellij.openapi.progress.impl.CoreProgressManager.silenceGlobalIndicator(CoreProgressManager.java:972) at com.intellij.openapi.progress.ContextKt.prepareIndicatorThreadContext(context.kt:108) at com.intellij.openapi.progress.ContextKt.prepareThreadContext(context.kt:78) at com.intellij.openapi.progress.CoroutinesKt.runBlockingCancellable(coroutines.kt:127) at com.intellij.openapi.progress.CoroutinesKt.runBlockingCancellable(coroutines.kt:122) at com.android.tools.idea.run.configuration.execution.AndroidConfigurationExecutorBase.debug(AndroidConfigurationExecutorBase.kt:100) at com.android.tools.idea.execution.common.AndroidConfigurationExecutorRunProfileState.debug(AndroidConfigurationExecutor.kt) at com.android.tools.idea.run.DefaultStudioProgramRunner.run(DefaultStudioProgramRunner.kt:103) at com.android.tools.idea.execution.common.AndroidConfigurationProgramRunner$execute$5.run(AndroidConfigurationProgramRunner.kt:126) at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:434) at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:132) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$5(CoreProgressManager.java:484) at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:248) at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:73) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:192) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:610) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:685) at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:641) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:609) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:78) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:179) at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:73) at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$5(ProgressRunner.java:248) at com.intellij.openapi.progress.impl.ProgressRunner$ProgressRunnable.run(ProgressRunner.java:498) at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:81) at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:81) at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:86) at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:81) at com.intellij.openapi.progress.impl.ProgressRunner.lambda$launchTask$18(ProgressRunner.java:464) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: com.android.tools.deployer.DeployerException: 组件激活异常 at com.android.tools.deployer.DeployerException.componentActivationException(DeployerException.java:678) at com.android.tools.deployer.model.component.WearComponent.runStartCommand(WearComponent.java:131) at com.android.tools.deployer.model.component.WatchFace.activate(WatchFace.java:61) at com.android.tools.deployer.Activator.activate(Activator.java:85) at com.android.tools.deployer.Activator.activate(Activator.java:71) at com.android.tools.idea.run.configuration.execution.AndroidWatchFaceConfigurationExecutor.setWatchFace(AndroidWatchFaceConfigurationExecutor.kt:79) ... 47 more 2024-07-01 17:38:28,566 [9108713] INFO - #c.i.w.i.i.j.s.JpsGlobalModelSynchronizerImpl - 正在将全局实体保存到文件
解决建议
- 手动切换表盘后调试:先通过Run安装APK,在手表/模拟器上手动设置该表盘为当前激活表盘,再启动Debug模式,此时调试器会直接附加到已运行的表盘进程,无需系统自动切换。
- 调整Debug配置:在Android Studio的Run/Debug Configurations中,将Launch选项设置为
Nothing,安装完成后手动启动表盘,再通过Run > Attach Debugger to Process选择表盘对应的进程进行调试。 - 模拟器调试可行性:完全可以在Wear OS模拟器上调试表盘。需要创建Wear OS虚拟设备,确保镜像版本与项目编译SDK版本兼容,同时开启模拟器的开发者选项和USB调试功能,操作步骤与实体设备一致。
内容的提问来源于stack exchange,提问作者Makc
相关产品推荐
相关产品推荐

