Androidのプリインストールアプリを無効化する

2018年1月15日

Androidのプリインストールアプリを無効化する手段として、adb shell pm hideを用いた方法が昨年の夏ごろから使えなくなったのはご存じのとおり。

最近はプリインストールアプリが少ない機種ばかり使っていたので、まぁいいかなーと思っていたところに、「adb shell pm uninstall -k –user 0 <パッケージ名>で無効にできるよ!」という話を聞いたので早速試しました。

pm uninstallだッ!

早速無効化に移りたいところですが、まずはバックアップを取っておきましょう。

大事なデータのバックアップはもちろんですが、無効化するアプリのapkファイルもバックアップしておきましょう。

/system/priv-app内をバックアップ

プリインストールされているアプリのapkは/system/priv-appにあります。その中から、必要な物だけバックアップするか、priv-appフォルダごとゴッソリとバックアップします。

お手持ちのPCにadb pullするなり、任意のファイラーアプリで安全な場所にバックアップするなりしておいてください。

パッケージ名を調べる

「adb shell pm list packages -s」でインストールされているアプリのパッケージ名一覧が表示されます。(-s: システムアプリのみを表示)

大量に表示されると思いますので、必要に応じてgrepしてください。今回使うデバイスはGalaxy S6 edge SCV31なので、au向けにほぼ確実に入っているであろう「安心アクセス for Android」を無効にしてみようと思います。

「安心アクセス for Android」のパッケージ名は「jp.netstar.familysmile」ですが、折角なのでパッケージ一覧で確認してみましょう。一覧に目を通すのも大変なので、grepも使ってみます。

Windowsのコマンドプロンプトなどを用いている場合、「’grep’ は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と怒られるはずですので、grepコマンドを使いたいときは一度シェル内に入る必要があります。adb shellしてから「pm list packages -s | grep family」と入力します。

すると、「package: jp.netstar.familysmile」と出てきますので、どこかにメモしておきます。「pm list packages -s | grep kddi」とすればパッケージ名にkddiが含まれるものだけを絞って表示してくれますし、grepコマンドは便利なので覚えておきましょう。

pm uninstallコマンドで無効化

実行は自己責任でお願いします。デバイスが起動しなくなっても責任取れませんのであしからず。

さて、長ったらしい前置きはここまで。ようやく本番です。(adb〜から入力する前提で説明をするので、先程シェルに入った場合はexitしてシェルから出ておきましょう。シェルから出ずに続けたい場合はpm〜から打ち始めてください。)

adb shell pm uninstall -k –user 0 jp.netstar.familysmile」を実行すると、「安心アクセス for Android」が未インストール状態となります。(-k: パッケージの削除後にデータとキャッシュのディレクトリを保持)(–user user_id: 照会するユーザー スペース)

userの前にあるハイフンは2つです。

未インストールになる。

元に戻すには、先程バックアップしたpriv-appフォルダから「FamilySmile.apk」を探してきて、/sdcard直下にコピー。

そのあと、「adb shell pm install -r –user 0 /sdcard/FamilySmile.apk」で元に戻ります。(-r: 既存のアプリを再インストールし、そのデータを保持)

ちなみに、-rを入れ忘れると、[INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install パッケージ名 without first uninstalling.]といわれました。コマンド名の通りアンインストールとなるので、apkのバックアップがないと初期化するしかなくなると思われます。(未確認)

今回はAndroid 7.0 セキュリティパッチレベル2017-07-01のSCV31を用いましたが、Android 8.0のデバイスでも問題なく使えるとのことです。

詳細情報

Android Debug Bridge | Android Studio 「package manager(pm)の呼び出し」