Sony 在 2014 年 5 月 21 日釋出了給 Xperia Z 的 Android 4.4.2 KitKat 韌體(版本號 10.5.A.0.230)。一開始許多 Xperia Z 使用者認為這是一個驚喜(因為稍早前官方表示 Xperia Z 的 4.4.2 升級可能要延遲到六月),但是現在確有很多人認為這真是個惡夢…因為許多人(雖然不是所有人)都遭遇了電力消耗異常迅速的問題!
我個人的經驗:更新之後手機 SoC 位置持續發燙。關閉螢幕讓裝置進入休眠狀態時,SoC 位置依然可以用手指感覺到明顯溫熱。電力消耗迅速,我看一場哥吉拉(片長 123 分鐘),開演前將手機切成飛航模式,看完字幕後拿出手機一看,電力從 84% 掉到 67%!兩個小時消耗掉 17%,還是在飛航模式呀!即使重置過也是一樣。
這兩張圖並不是同一個時間拍的,左邊是 5 月 24 日 08:43 拍的,右邊是 5 月 24 日 02:29 拍的,但是可以參考。從圖上可以看出 Google Play 服務(Google Play Services。較舊的版本名為 Google 服務,Google Services)消耗的比例異常偏高,而 Google Play Services 會消耗這麼多電力是因為它幾乎不休眠,一直在運作中!
也就是因為這樣,所以 SoC 才會一直維持溫熱狀態。因為 CPU 從來就沒睡過,一直忙著處理 Google Play Services 的需求。雖然看起來很像是定位的問題,但是我曾經測試過將定位服務關閉或者是把模式設定為僅限 GPS,電力消耗依然異常(還記得我上面說的看電影將手機切成飛航模式的例子嗎?兩個小時內依然消耗了 17% 的電力,元兇當然是 Google Play Services)。
有些使用者回應並沒有這個問題,我不知道原因是什麼,因為沒有一一去詢問,有可能他們使用的 app 都不需要定位服務,所以 Google Play Services 樂得清閒。
如果你喜歡定位服務帶來的好處(例如 Google+ 的《位置》觀察朋友在哪邊,或者是《定位記錄》(location history)來記錄每日的活動範圍,或是 Google Now 的路程分析等等),目前能夠避免這種電力消耗異常問題同時保有定位服務帶來的好處的方法只有一個:
取得 root 權限,安裝 Xposed,安裝 Wakelock Terminator 模組,阻止 Google Play Services 不停喚醒 CPU 做事!
一,取得 root 權限
請參考 [ Xperia Z ] Android 4.4.2 KitKat 取得 root 權限的方法 。
二,安裝 Xposed
- 到 Xposed Installer 下載 Xposed 最新版本的安裝檔(本文上架時最新穩定版本為 2.6.1)。
- 將上一步中下載的 apk 儲存到手機的內部儲存區。
- 到【設定】,【安全】,將《不明來源》打勾。
- 用檔案管理 app 找到第二步存入手機的 apk,安裝它。
- 安裝後,在 App 列表找到 Xposed Installer 並且啟動它。
- 在 Xposed Installer 中,進入【Framwork】。第一次安裝的人應該會看到類似右圖畫面,但是在《active》處都是 -- 。此時按下【Install/Update】正式安裝 Xposed。過程中你的 su 權限管理 app(SuperSu 或 SuperUser)會詢問 Xposed 要求 root 權限是否允許?當然允許。安裝好後 Xposed Installer 會要求重開機。
三,安裝與設定 Wakelock Terminator
本解決方案為 MstrKief 於 Any fix yet for Google Services battery drain? 內所提供。
- 到 Wakelock Terminator ★ root - Google Play Store 安裝 Wakelock Terminator。
- 從 App 列表啟動 Xposed Installer。
- (以下畫面跟你看到的可能有些許差異,那是因為擷取這些畫面的裝置已經設定完成了。你也可以藉此比對自己的設定是否有誤。)進入【Module】。此時你會看到如中圖般的畫面,但是右側的格子應該是空的。按一下 1.4 旁邊的格子讓它打勾,使 Wakelock Terminator 生效。然後按返回鍵回上一層,進入【Framework】,按【Reboot】重開機使設定生效。
- 重開機後,從 App 列表進入 Wakelock Terminator。(以下畫面跟你看到的可能有些許差異,那是因為擷取這些畫面的裝置已經設定完成了。你也可以藉此比對自己的設定是否有誤。)
先在 All Apps 找到 Google Play Services,點一下 Google Play Services 後出現中間的話面,將《Prevent Wake Lock》打勾。然後按一下《Filter Wake Lock》,依序輸入NlpCollectorWakeLock NlpWakeLock CheckinService NetworkLocationLocator
之後按【OK】儲存。然後就能退出 Wakelock Terminator 了。
- 接下來,Wakelock Terminator 就會盡責的避免 Google Play Services 不停的喚醒 CPU 做事,而電力消耗異常的情況也可以獲得改善。
沒有留言:
張貼留言