Can't connect to activity manager; is the system running 問題探究及解決

一、文檔概述

本文旨在記錄錯誤信息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:

  • adb shell am start -n com.android.settings/com.android.settings.Settings

1、正常情況:

正常情況

正常情況

隨後手機會顯示設置界面。

2、異常情況:

首先運行以下命令,關閉zygote進程:

  • adb shell stop //(現象:單擊電源鍵屏幕不亮)

隨後打開目標app,提示信息如下:

異常情況

異常情況

可以發現,顯示的信息和工程代碼錯誤信息一致。

四、小結

經過以上分析,出現以上錯誤的原因的確是zygote進程異常退出導致的。

爲什麼呢?因爲zygote進程控制着系統服務,包括AMS等關鍵服務。如果zygote進程異常退出,所以進程包括服務都會被關閉,導致提示系統沒有運行。

解決的方式比較簡單:

  • 1、運行:

    • adb shell start
  • 2、重啓手機

五、注意事項

注1:部分手機需要root權限運行

注2:關閉zygote進程之後,手機還是可以使用adb進行控制的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章