uninstallはインストール済みのアプリを端末から削除するサブコマンドである。

uninstallで基本的なアンインストールを行う

アプリケーションのアンインストールはadb uninstallコマンドを使って以下のように実行する。

$ adb uninstall アプリケーション名

例えばcom.example.myappというアプリケーションをアンインストールする場合は以下のように実行する。

$ adb uninstall com.example.myapp

アプリ名はAGP8.0未満の場合はAndroidManifest.xmlのpackage属性の値を参照する。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    ...

AGP8.0以降の場合はbuild.gradlebuild.gradle.ktsなどのapplicationIdを参照する。

andorid {
    defaultConfig {
        applicationId "com.example.myapp"
    }
}

ソースコードを手元で確認できない場合は、adb shell pm list packagesで端末側からアプリ名を確認できる。詳しくは【Android】コマンドでインストール済みアプリの一覧を表示する を参照。

uninstall -kはそのままでは拒否される

-kを付けてアンインストールしようとすると、実際には削除されず警告メッセージが表示される。

$ adb uninstall -k com.example.app
The -k option uninstalls the application while retaining the data/cache.
At the moment, there is no way to remove the remaining data.
You will have to reinstall the application with the same signature, and fully uninstall it.
If you truly wish to continue, execute 'adb shell cmd package uninstall -k'.

このときpm list packagesにアプリ名がまだ表示されることも確認できる。Android 9の実機・Android 16のエミュレータのどちらで試しても同じ挙動だった。

警告メッセージにあるとおり、-kで保持したデータは通常の手段では削除できない。データディレクトリはアプリ専用のUID(例: u0_a314)の所有物になっており、adb shellが使うshellユーザーには削除権限がない。

$ adb shell ls -ld /data/data/com.example.app
drwx------ 4 u0_a314 u0_a314 4096 2026-09-23 22:30 /data/data/com.example.app

$ adb shell rm -rf /data/data/com.example.app
rm: chmod '/data/data/com.example.app' to 0700: Operation not permitted
rm: No /data/data/com.example.app: Permission denied

このデータを回収できるのは、パッケージマネージャーを介してのみである。しかも、パッケージマネージャーは元のアプリと異なる署名のAPKを同じパッケージ名でインストールしようとすると拒否する。

$ adb install app-signed-with-different-key.apk
Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.example.app signatures do not match previously installed version; ignoring!]

つまり、保持されたデータに再びアクセスするには元と同じ署名でのインストールが必須であり、通常はそれ以外に削除する方法がない(root権限や端末の初期化を使う場合を除く)。adb uninstall -kが誤操作でこの「同じ署名でないと触れられないデータ」を残してしまわないよう、あえてadb shell cmd package uninstall -kという一段階踏み込んだコマンドの実行を要求している。

adb shell cmd package uninstall -kで実行する

メッセージの指示通り、adb shell経由でcmd package uninstall -kを実行すると、データとキャッシュを保持したままアンインストールできる。

$ adb shell cmd package uninstall -k com.example.app
Success

$ adb shell pm list packages | grep com.example.app
(何も表示されない)

$ adb shell ls -d /data/data/com.example.app
/data/data/com.example.app

pm list packagesからは消えているが、/data/data配下のデータディレクトリは残っている。

保持したデータは再インストール時に復元される

同じ署名の同じアプリを再インストールすると、保持されていたデータディレクトリがそのまま使われる。

$ adb install app.apk
Performing Streamed Install
Success

$ adb shell pm list packages | grep com.example.app
package:com.example.app

この状態から改めて-kなしでuninstallを実行すると、警告メッセージの通りデータディレクトリごと完全に削除できる。

$ adb uninstall com.example.app

$ adb shell ls -d /data/data/com.example.app
ls: /data/data/com.example.app: No such file or directory