【问题标题】:What does 'adb shell start/stop' do?'adb shell start/stop' 有什么作用?
【发布时间】:2012-10-24 22:01:15
【问题描述】:

问题

adb shell startadb shell stop 实际上是做什么的?

说明

我想他们打电话给/system/bin/start/system/bin/stop。但是这两个可执行文件没有提供任何关于它们做什么的线索。在真机上测试时,我发现zygote进程启动和停止。所以这两个命令似乎控制着Android运行时(对应下图中的黄色和蓝色部分)。

但是究竟哪些进程/服务是用这两个命令启动/停止的?

【问题讨论】:

标签: android adb


【解决方案1】:

在你的设备上运行它

grep ^service /init*rc

【讨论】:

  • 直到最近,大多数官方 android 版本还没有包含 grep
  • 使用 adb pull 将所有这些文件复制到您的工作站,然后从那里运行 grep。
  • @ChrisStratton:编译/下载busybox并运行busybox grep
  • @pevik - 你可能会注意到我的评论说“直到最近”并且写于 2013 年。今天使用的大多数 Android 设备都内置了 grep。 Busybox 对于那些没有的人来说是一个选择,但为了方便在安全设备上使用而安装它可能会很痛苦。无论如何,检查开发机器上的 init 文件可能会提供更多信息,但现在它在那里,如果我对我正在寻找的东西有一个明确的想法,我会使用内置的 grep。
  • 这是如何解决这个问题的??
【解决方案2】:

基本上,您的所有 Android 服务都会重新启动;在SystemServer.java 中创建和注册的那些。这在“Zygote 的上下文”中被调用。所以是的,Zygote 已停止。

您在 Android 中使用 ServiceManager 注册的所有服务都将在 ServiceManager 中删除。要重新启动它们,请执行adb shell start

还要注意SystemServer是由Zygote启动的,所以init.rc告诉如果Zygote停止了,那么即使SystemServer也必须停止。甚至 SurfaceFlinger 也会死掉,因为它是从 SystemServer 开始的,但是是原生的。

【讨论】:

    【解决方案3】:

    我也一直想知道“停止”在 Android 上的作用。从某人那里得知“停止”会阻止 SurfaceFlinger 渲染 AP。

    尝试使用如下命令。执行命令,等待几秒钟,然后在 Android 上执行“停止”。该命令不断打印增加的数量并创建 .txt 文件。所以也许它只会在 Linux 部分保持活动状态时停止 Android 部分。仅供参考。

    busybox sh -c 'i=0;while [ $i -ne 100 ]; do echo $i >> count.txt; sleep 1; i=$(($i + 1)); echo $i; touch "$i.txt"; done;'
    

    【讨论】:

      猜你喜欢
      • 2015-07-11
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多