カスタムROM導入中に「Google Play開発者サービス」アプリを更新すると端末がDeep Sleepに入らずバッテリー消費が増加する問題について解決策をまとめました。
2015/4/2…解決策の説明が間違っていたのを修正
症状・原因・解決策
症状
カスタムROMを導入した端末で「Google Play開発者サービス」アプリを7.0.97や7.0.99に更新(またはそのバージョンのgappsを導入)すると、端末がDeep Sleep(バッテリー消費が非常に少ないモード)に入らなくなりバッテリー消費が異常に増加してしまいます。
この問題は、メーカー標準のROMを使用している場合には発生しません。
恐らく、カスタムROMを導入している全ての端末で発生しています。
上記に該当する方は一度確認してみてください。
この問題は、メーカー標準のROMを使用している場合には発生しません。
恐らく、カスタムROMを導入している全ての端末で発生しています。
上記に該当する方は一度確認してみてください。
下の画像のように、「Google Play開発者サービス」アプリが電池消費の大きな割合を占めており、右画像のように長時間「スリープモードにしない」状態になってしまっています。
また、「Wakelock Detector」というアプリを使用すると、Deep Sleepに入っている時間を簡単に表示することが出来ます。※使用にはroot権限が必要になります。
下の画像では、10分間でDeep Sleepになっている時間が「0.0秒」となっており、一度も入っていないことを示しています。
原因
カスタムROMを導入している場合は、GoogleからのOTA(Over The Air)更新を受けることが出来ません。にも関わらず、「Google Play開発者サービス」アプリがGoogleサーバーへOTA更新問い合わせを延々と繰り返してしまい、Deep Sleepに入ることが出来なくなってしまっているようです。
現在、CyanogenModではこの問題を把握しており、修正に取り組んでいるようです。CyanogenModで修正されれば、以下の解決策を行う必要はありません。
~2015/4/2追記~
現在のビルドでは既に修正されています。
現在、CyanogenModではこの問題を把握しており、修正に取り組んでいるようです。CyanogenModで修正されれば、以下の解決策を行う必要はありません。
~2015/4/2追記~
現在のビルドでは既に修正されています。
解決策
この問題の解決策は2つあります。どちらか1つを実行すれば問題ありません。※root権限が必要になります。
どちらも暫定的な方法になりますので他のアプリやサービスに影響する場合があります。「Google Play開発者サービス」アプリの更新やカスタムROMの更新によってこの問題が解決された場合は、直ちに元に戻して下さい。
- 「Google Play開発者サービス」アプリに含まれるサービスの内、無効化されているアップデート(更新)に関するサービス「SystemUpdateService」を"有効化"し、更新問い合わせを行わないようにする。
- 「Google Play開発者サービス」アプリの「スリープの解除」権限と「スリープモードにしない」権限を無効化する。
解決策実行後は「Wakelock Detector」アプリなどできちんどDeep Sleepに入っているかを確認して下さい。
アップデート(更新)に関するサービス「SystemUpdateService」を"有効化"し、更新問い合わせを行わないようにする
この方法は、各アプリに搭載されているサービスを有効化するアプリを使用している場合に使用することが出来ます。
今回は「Disable Service」というアプリを使用します。このアプリを使用した場合は、以下の動作を端末起動時に毎回行う必要があります。
なお、「Takser」アプリを使用している場合は端末起動時に自動的にサービス停止・開始を行うことが出来るようです。
なお、「Takser」アプリを使用している場合は端末起動時に自動的にサービス停止・開始を行うことが出来るようです。
- こちらから「Disable Service」アプリを端末にインストールする。
- 「Disable Service」アプリを起動する。
- 右から左へスワイプし、Systemアプリを表示させる。
- 下にスクロールし、「Google Play開発者サービス」を表示させ、タップする。
- 下にスクロールし、赤字で表示されている「SystemUpdateService」をタップする。
- root権限使用許可を求められるので、許可する。
- チェックが入り、白字になっていることを確認する。
以上が、アップデート(更新)に関するサービス「SystemUpdateService」を"有効化"し、更新問い合わせを行わないようにする方法です。
「スリープの解除」権限と「スリープモードにしない」権限を無効化する
この方法は、アプリ毎の権限を管理するアプリやXposedモジュールを使用している場合、またはROMの機能に「プライバシーガード」が搭載されている場合(CyanogenMod系)に使用することが出来ます。
今回は、Euphoria-OS導入状態OnePlus Oneにおいて「プライバシーガード」機能を用いて権限を無効化します。この作業は、端末を再起動しても再び行う必要はありません。
※端末やROMによって設定画面や項目などが異なる場合があります。
- 端末の「設定」アプリを開く。
- 「プライバシー」をタップする。
- 「プライバシーガード」をタップする。
- 「メニュー」ボタンをタップし、「内蔵アプリを表示」をタップしてチェックを入れる。
- 下にスクロールし、「Google Play開発者サービス」を表示させ、「長押し」する。
- 下にスクロールし、「スリープの解除」の項目を表示させ、スイッチをタップして権限を「オフ」に設定する。
- 下にスクロールし、「スリープモードにしない」の項目を表示させ、スイッチをタップして「オフ」に設定する。
以上が「スリープの解除」権限と「スリープモードにしない」権限を無効化する方法になります。
参考になるサイトなど
- Google+(abu obayda 様)
Since lot of people facing some unwanted wakelocks from google play services, I… - Google+(Dimitris Psallidas 様)
Alright, found a permanent solution for the stupid play services wakelock 20.3… - xda-developers
[SCRIPT][GUIDE] Google Play Services Battery… | Google Nexus 5 | XDA Forums