为啥“adb install (my APK)”会触发“找不到服务:包”?

Posted

技术标签:

【中文标题】为啥“adb install (my APK)”会触发“找不到服务:包”?【英文标题】:Why is "adb install (my APK)" triggering "can't find service: package"?为什么“adb install (my APK)”会触发“找不到服务:包”? 【发布时间】:2017-08-09 15:55:20 【问题描述】:

我正在启动一个 android 虚拟设备,但我得到了:

Starting emulator for AVD 'avd.1'
pulseaudio: pa_context_connect() failed
pulseaudio: Reason: Connection refused
pulseaudio: Failed to initialize PA contextaudio: Could not init `pa' audio driver
emulator: Listening for console connections on port: 5558
emulator: Serial number of this emulator (for ADB): emulator-5558

模拟器即将启动,但我没有看到上面的图标,所以我想知道上面列出的错误是否是“showstoppers”?然后当我尝试adb install bin/my.apk 时,我收到错误Can't find service: package。所以看起来 adb 没有与 AVD 正确通信。但是,adb devices 确实显示了上面列出的 emulator-5558。任何建议都会很有帮助。

【问题讨论】:

你能解决这个问题吗? 不 - 我已经放弃了让模拟器运行,现在正在开发一个实际设备并使用 adb 查看日志。可以选择使用模拟器会很好,所以如果有人对为什么(1)模拟设备会在屏幕上显示没有图标以及(2)为什么我会得到“找不到”有任何想法尝试“adb install”时服务”味精,我欢迎他们。 TIA。 我在删除并重新下载图像后创建了一个具有类似配置的新模拟器,这次它工作了。我的猜测是旧的模拟器配置/图像中丢失、配置错误或损坏。 谢谢阿达什。我会试试的。 在我的情况下,错误似乎是由于 ARM 模拟器太慢,以至于在我执行 adb install xxx.apk 命令之前没有时间加载所有服务。当我第二次尝试该命令时,我收到另一个错误:adb: failed to install xxx.apk: 没有任何信息,但我注意到该应用程序已正确安装。你可以通过输入命令adb shell service list来查看是否加载了“包”服务。 【参考方案1】:

您在提出问题时基本上已经回答了自己的问题。问题的根源是模拟器设置不正确(系统 UI 未加载证明)。当Android无法正常启动时,很可能无法启动某些系统服务(本例为package服务)。

解决方案是重新创建模拟器,可能使用不同的系统映像(以防您一直使用的系统映像已损坏)。如果您使用的是官方镜像,请尝试切换 API 级别,或从支持 GMS 的模拟器镜像切换到非 GMS 镜像(反之亦然)。

【讨论】:

感谢您提供的 blufenix。我再看一张图。 在之前保存状态的模拟器中使用-wipe-data-no-snapshot 标志时也会发生这种情况【参考方案2】:

别忘了开启usb调试模式和开发者选项中同意数据文件传输,对我来说解决了这个问题,希望对你有帮助

【讨论】:

【参考方案3】:

在调试时关闭模拟器后也发生在我身上。是的,不是最好的主意...

对我来说解决方案是:

    单击工具 > AVD 管理器。 在您的(虚拟)设备上单击新窗口右侧底部的箭头。 点击“立即冷启动”。

【讨论】:

以上是关于为啥“adb install (my APK)”会触发“找不到服务:包”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 list-tail 会引发异常?为啥我们没有关于 cdr 的闭包属性?

为啥我的 PHP 会话会死掉?为啥我不能恢复它们?

为啥这不会超载?

为啥 XMPPFramework 会阻塞?

为啥使用有状态的 Web 服务是不好的编程,为啥会被允许?

为啥会出现 NSException 错误?