Service Killerで停止できないサービス

非公開のサービス

Androidのサービスには、外部のアプリからアクセスされる(外部に機能を提供する)ことを前提に設計されたサービスと、アプリ(パッケージ)内部からのみ利用されることを前提に設計されたサービスがあります。

image

これは、アプリ(パッケージ)のexportedという属性で表現され、Service Killerの「詳細情報」の画面にて確認できます(v1.1.0より)。

image

exported=falseと設定されたサービスには外部のアプリからはアクセスできません。つまり、Service Killerで停止できるサービスは、exported=trueと設定されたサービスのみになります。

そのため、Service Killerでは、exported=falseとなっているサービスはサービス一覧に表示しない仕様としています(ver.1.1.0より)。

なお、Service Killerの設定「非公開サービスを表示しない」を無効にすることにより、exported=falseのサービスも一覧に表示することができます。

Permissionで保護されたサービス

exported=trueなサービスであってもService Killerでは停止できないサービスがあります。AndroidのアプリにはPermissionという概念があり、これにより利用する機能を宣言する、または、利用されることを保護することができます。

あるサービスが特定のPermissionで保護されている場合には、同一のPermissionを利用することを宣言しているアプリ以外からは、そのサービスにアクセスできません

image

つまり、Service Killerが使うことを宣言しているPermission以外で保護されているサービスは、Service Killerでは停止することができないということになります。

サービスが保護されているPermissionは、Service Killerの「詳細情報」の画面にて確認できます(v1.1.0より)。

image

また、保護されているPermissionにはProtection Levelという保護の強度のような定義があり、以下のいずれかが設定されています。

  • normal
  • dangerous
  • signature
  • signatureOrSystem

このうち、signatureもしくはsignatureOrSystemで保護されている場合には、サードパーティアプリであるService Killerでは停止できません。なお、各Protection Levelの詳細についてはこちらに説明をご確認ください。

Service Killerが利用することを宣言しているPermissionは、Permission情報でご確認いただけます。

以上は、開発者のAndroidの理解に基づき解説しておりますが、誤りがありましたらご指摘を頂けると幸いです。また、特定のサービスを停止するためにService KillerにPermissionの追加のご要望がありましたら、対応を検討しますのでご連絡ください。

PR