一、文档概述
本文旨在记录错误信息Error type 2: android.util.AndroidException: Can't connect to activity manager; is the system running?
问题分析及解决方式。
二、问题描述
在今天测试过程中发现任务卡在某一阶段无法通过,其中提示信息如下:
错误信息
提示信息显示Android系统没有运行。
出现这个问题很奇怪的,正常来说是不会出现这种情况的。
既然出现了就开始分析。经过搜索,发现并没有什么有效信息。其中的解释都是重启手机,当然,重启手机可以解决问题,但是我们还是不知道为什么会产生这个问题。
暂时没有什么头绪。。。
突然,灵光一现。。。。。。
由于提示信息表示Android系统未运行,Android系统实际运行的是一个zygote进程,通过这个进程再fork子进程来运行app的。从侧面可以说明,zygote就是Android system。
因此可能就是zygote进程挂了导致提示如上信息。
复现这个问题就简单多了,只需要kill掉zygote进程即可。
之前调研adb使用发现使用adb shell stop即可实现。
三、问题复现
目标:
使用命令打开app:
1、正常情况:
正常情况
随后手机会显示设置界面。
2、异常情况:
首先运行以下命令,关闭zygote进程:
随后打开目标app,提示信息如下:
异常情况
可以发现,显示的信息和工程代码错误信息一致。
四、小结
经过以上分析,出现以上错误的原因的确是zygote进程异常退出导致的。
为什么呢?因为zygote进程控制着系统服务,包括AMS等关键服务。如果zygote进程异常退出,所以进程包括服务都会被关闭,导致提示系统没有运行。
解决的方式比较简单:
五、注意事项
注1:部分手机需要root权限运行
注2:关闭zygote进程之后,手机还是可以使用adb进行控制的