Android 什么是';adb外壳启动/停止';做 问题:

Android 什么是';adb外壳启动/停止';做 问题:,android,adb,Android,Adb,adb外壳启动和adb外壳停止实际做什么 描述 我想他们会调用/system/bin/start和/system/bin/stop。但是这两个可执行文件没有给出任何关于它们做什么的线索。当在真实的设备上测试时,我发现合子过程开始和停止。因此,这两个命令似乎控制着Android运行时(对应于下图中的黄色和蓝色部分) 但是使用这两个命令启动/停止哪些确切的进程/服务?在您的设备上运行此命令 grep ^service /init*rc 基本上,你所有的安卓服务都会重启;在SystemServer

adb外壳启动
adb外壳停止
实际做什么

描述 我想他们会调用
/system/bin/start
/system/bin/stop
。但是这两个可执行文件没有给出任何关于它们做什么的线索。当在真实的设备上测试时,我发现合子过程开始和停止。因此,这两个命令似乎控制着Android运行时(对应于下图中的黄色和蓝色部分)


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

在您的设备上运行此命令

grep ^service /init*rc

基本上,你所有的安卓服务都会重启;在
SystemServer.java
中创建和注册的。这被称为“合子上下文”。所以是的,合子停止了

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


还要注意,
SystemServer
是由zyote启动的,因此
init.rc
告诉我们,如果zyote停止了,那么即使是
SystemServer
也必须停止。即使是
SurfaceFlinger
也会死掉,因为它是从
SystemServer
开始的,但是是本地的。

我一直想知道“stop”在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;'

直到最近,大多数android官方版本还没有包含
grep
使用
adb pull
将所有这些文件复制到您的工作站上,然后从那里运行grep.@ChrisStratton:compile/download
busybox
并运行
busybox grep
@pevik-您可能注意到我的评论说“直到最近”这本书写于2013年。目前使用的大多数安卓设备都内置了grep。Busybox是那些不需要的设备的一个选项,但是为了方便地在安全设备上使用而安装Busybox可能会很麻烦。不管怎样,在开发机器上检查init文件可能会提供更多信息,但现在有了它,如果我对我要找的东西有很强的了解,我会使用内置的grep。这是如何解决这个问题的?来源: