ByteScope

APK Extractor

インストール済みアプリの APK を USB で端末から取り出す。base と全 split をまとめ、manifest・権限・署名までこのページで読める。

APK は端末から選んだ保存先へ直接ストリーミングされます。アップロードは一切なく、解析もこのタブ内で完結します。

ブラウザの対応を確認中…

このツールについて・FAQ・関連ツール

このツールについて

Android のアプリはすべて端末上のファイルであり、adb はファイルを読めます。このページはそれを使います。インストール済みのアプリを選ぶと、その APK が USB ケーブル経由で、あなたが指定した保存先に取り出されます。root 不要、端末に何もインストールせず、どこにもアップロードしません。split 形式のアプリは全パーツと目次を含む 1 つの .apks として戻り、どのアプリもその場で解析できます(権限、署名、SDK レベル、DEX とリソースの統計、ネイティブライブラリ)。

インストール済み APK のコピーに root が不要な理由

root が必要なのは*他のアプリのデータ*、つまり /data/data 以下のデータベースや設定やファイルを読むときです。APK 自体はデータではなくインストール成果物で、誰でも読める場所に置かれています。ストア経由や sideload なら /data/app/~~<乱数>/<パッケージ>-<乱数>/base.apk、プリインストールなら /system/app/product/app です。shell ユーザーはそれらのディレクトリを辿ってファイルを読めます。だから adb pull で APK を取り出す手順は 10 年以上前から通用してきました。このページが足すのは、パスを代わりに調べること(pm path <パッケージ> は split も含めた全ファイルを表示します)、出力にパッケージ名と versionCode で名前を付けること、そして split の集合をバラのファイル群ではなくインストール可能な形にまとめることです。限界も正直に書きます。/data/app が読めるのは慣例であって保証ではなく、加固されたビルドや大きく改変されたビルドは実際に拒否します。拒否された場合は端末が出した文言をそのまま表示します。

base.apk と split、それぞれの中身

Android App Bundle としてビルドされたアプリは、複数の APK として同時にインストールされます。base.apk は manifest、コード(classes*.dex)、リソーステーブル、そして端末に依存しないすべてを持ちます。その隣に構成 split が並びます。split_config.arm64_v8a.apk は 1 つの CPU アーキテクチャ向けネイティブライブラリ、split_config.xxhdpi.apk は 1 つの画面密度向け画像、split_config.en.apk は 1 言語の文字列です。機能 split はオンデマンドモジュールを追加します。端末は*その端末に合う* split だけをインストールしています。これが他の端末へコピーするときに最初に理解すべき点です。取り出したものは universal APK ではなく、この端末に合わせた集合です。base だけを入れると起動して初回でクラッシュしやすいのも同じ理由です。コードはあるのに、読み込むライブラリがありません。

取り出した APK が別の端末に入るかどうか

決めるのは 2 つです。**署名**は APK と一緒に移動するので、アプリは元と同じ同一性でインストールされます。つまり、同じアプリを別の誰かが署名したコピーの上には入れられませんし、後で Play が自分のビルドに置き換えることもあります。難しいのは**split の集合**です。.apks 全体を入れればパーツは揃いますが、コピー先の端末が別の CPU アーキテクチャや大きく違う画面密度なら、手元の split はその端末を記述していないので、起動後にライブラリが見つからず失敗し得ます。集合のインストールは pm install <ファイル> でもありません。セッション(pm install-create、APK ごとに install-writeinstall-commit)が必要で、それはこのサイトの APK Installer ページが代わりに行います。最後に、Play 経由で配布され、ライセンス確認や Play Integrity を見るアプリは、ストア以外からインストールされたと分かると、コピーが完全でも起動を拒否することがあります。

.apks とは何か、そして本ページが作るもの

.apks は bundletool の出力形式で、1 つのアプリの APK 群と、どれが master split でほかが何を対象にしているかを記した toc.pb を含む ZIP です。そのメタデータこそ形式の存在理由です。バラのファイル群ではどれが base でどの split がどのアーキテクチャ向けかが失われ、ファイル名は推測にすぎません。このページが書くコンテナも同じ形をしています。取り出した APK を splits/ に置き、端末が報告した内容から生成した toc.pb を添えるので、本サイトの APK Installer は名前ではなくメタデータから split を分類します。圧縮せず格納します(APK 自体がすでに圧縮アーカイブです)。また端末を読みながらディスクへ書き出すので、900 MB のゲームがブラウザーのメモリーに収まる必要はありません。これは自分たちのツールが読む自分たちのコンテナです。bundletool の出力とバイト単位で同一だとは主張しませんし、他のインストーラーが受け付けるかどうかは分かりません。

このページは端末に何も書き込みません。取り出しは読み取りだけ(パッケージ一覧、パスの問い合わせ、ファイルの読み取り)なので、確認ダイアログもありません。壊す操作がないからです。ここからは、手元のファイルを解析して 2 つの版を比較できる APK Analyzer、逆方向にパッケージを送る APK Installer、端末ダッシュボードと残りの道具がある Web ADB ハブへ進めます。

よくある質問

機種変更の前に、自分が入れたアプリを全部バックアップするには?

USB デバッグを有効にして接続し、「ユーザーアプリを全選択」を押します(第三者アプリの一覧なのでプリインストールは入りません)。次に「フォルダーを選んで取り出す」を押します。パソコン側のフォルダーを 1 回選ぶと、各アプリがそこに 1 ファイルずつ書き出されます。split 形式なら `<パッケージ>-<versionCode>.apks`、単体なら `.apk` です。アプリは 1 つずつ処理され、結果も個別に報告されるので、shell が読めないアプリがあってもバックアップ全体が失敗するのではなく 1 行の報告になります。戻すときは新しい端末で APK Installer のページにファイルをドロップします。

取り出せないアプリがあるのはなぜ?

理由は 3 つで、どれなのかはページが表示します。`shell` ユーザーにアプリのディレクトリを読む権限がない場合(加固ビルドや一部の OEM ビルドでは普通のことで、端末のエラーをそのまま表示します)。`pm path` が何も出さない場合(このページは user 0 について尋ねるので、仕事用プロファイルや別ユーザーだけに入っているアプリで起こります)。あるいはそもそも素の APK ではない場合(`pm path` は `.dm` の dex メタデータも列挙することがあり、コンテナに入れるとインストールに失敗するのでスキップします)。APK の合計が古典的な ZIP の上限(4 GiB)を超えるアプリも、一部のツールでしか開けない壊れたアーカイブを書くより拒否します。

取り出した APK が別の端末にインストールできません。なぜ?

多いのは split アプリで base だけを入れた場合です。コードはありますが、その端末向けのネイティブライブラリとリソースは config split の側にあります。base をシステムのインストーラーに渡すのではなく、インストールセッションを開くツール(このサイトの APK Installer ページ)で `.apks` 全体を入れてください。次に多いのは署名の衝突で、同じパッケージが別の出所から既に入っている場合です。既存のコピーを先に削除する必要があります。また CPU アーキテクチャが違う端末では、この端末が受け取った split がその端末を記述していないこともあります。

有料アプリもこの方法でバックアップできますか、そして許されますか?

技術的には他のファイルと同じようにコピーされます。保持や移動が許されるかは技術ではなくライセンスの問題です。アプリの購入は利用ライセンスの購入であり、通常は購入したアカウントに結び付いています。何をコピーしてよいかを決めるのはこのページではなくライセンス条項です。自分がライセンスしたソフトウェアを自分の端末で使うためにバックアップするのは普通のことで、このページの用途もそれです。他人に APK を配ることはそうではありませんし、多くの有料アプリは実行時に Play と照合し、ストア以外から入れられたと分かると起動を拒否するので、渡したコピーはそもそも動かないことが多いです。このページはライセンス回避を助けません。署名を外したりチェックを書き換えたりする機能もありません。

  • Web ADB Toolkit

    端末ダッシュボード、shell ドロワー、その他すべての Web ADB ツール。

  • APK Analyzer

    手元のファイルに対する同じレポートと、バージョン比較。

  • APK Installer

    .apk / .apks / .xapk / .apkm を端末に書き戻す。

  • Android Debloater

    プリインストールアプリの削除・無効化と、復元リスト。