【问题标题】:How does adb -e uninstall package detect emulators? In-depth emulator detectionadb -e uninstall package 如何检测模拟器?深入的模拟器检测
【发布时间】:2015-07-09 10:22:56
【问题描述】:

有人告诉我,运行命令“adb -e uninstall com.example.myapp”特别适用于模拟器,因为“-e”。 ADB 如何知道该设备是模拟器?有没有可用的源代码?

我试图找到一种更深入的方法来检测不依赖于BUILD.PROP 或任何容易更改的值的模拟器。如果有人可以帮助回答这个问题,或者指导我了解与更深入的模拟器检测相关的任何信息,我将不胜感激。请不要提供任何导致购买模拟器检测产品的信息。

【问题讨论】:

  • “请不要提供任何导致购买模拟器检测产品的信息。”我什至不知道它的存在......
  • 提供模拟器检测的产品/服务/公司很多。

标签: android android-emulator adb emulation


【解决方案1】:

adb 主要由客户端-服务器模型组成。当您在命令行中键入adb 时,您正在使用 adb-client 与始终运行的 adb-server 对话。

adb-server 通过两种不同的传输机制“与设备对话”。 USB 和 TCP。如果您输入 -e 标志,adb-client 会将其传输机制显式设置为 'transport-local'(与 'transport-usb' 相对)并且尝试连接到 tcp:localhost:5037 的 adb-server。

Android 模拟器也通过 TCP 连接到 adb-server。

所以要回答您的问题,如果您为 adb 客户端指定 -e,它会尝试通过 TCP 连接到 adb-server,该服务器会检查来自客户端的设置传输机制并尝试通过 TCP 连接模拟器或 USB 用于实际设备。如果有多个模拟器实例在运行,adb -e 将失败。

adb is open 的源代码。您可以在那里了解更多信息。

【讨论】:

  • 非常感谢您提供的信息丰富的答案和链接。你真棒。
猜你喜欢
  • 1970-01-01
  • 2012-01-18
  • 2018-03-09
  • 2017-12-15
  • 1970-01-01
  • 2013-08-23
  • 2017-04-02
  • 2016-02-28
  • 2013-05-24
相关资源
最近更新 更多