インストールされている Android アプリから APK ファイルを抽出する

A smartphone with app icons and a tray pulling out an app, illustrating extracting APKs

法的および安全上の注意: この記事は教育のみを目的としています。デバイスからの APK の抽出は、アプリケーション あなたが所有するデバイスにすでに合法的にインストールされている の個人的なバックアップを目的としています。 XAPKS から APK へは、著作権で保護されたアプリケーション、有料アプリケーション、または海賊版アプリケーションをホスト、配布、リンク、またはアクセスを促進するものではありません。 有料アプリまたは著作権で保護されたアプリから抽出した APK を再配布することは許可されていません。全規約については、免責事項 をご覧ください。

携帯電話に素晴らしいアプリがあり、何時間もかけてセットアップしたのに、Play ストアから削除されていることに気づきました。あるいは、新しいデバイスに切り替えようとしていて、万が一に備えてお気に入りのツールのオフライン コピーが必要な場合もあります。現在インストールされているアプリの APKファイルの抽出 が解決策です。

以下では、root を使用せずに携帯電話から APK を取得する方法、これがバックアップに役立つ方法、および後で オンライン分析ツール を使用して抽出されたファイルを確認する方法について説明します。

重要なポイント

  • ほぼすべてのアプリの APK ファイルをデバイスの内部ストレージから直接抽出できます。
  • 最近のアプリでは 分割APK が使用されることが多く、これには特殊な抽出プログラムが必要です。
  • 標準アプリケーションをバックアップするためのルート (スーパーユーザー) アクセスは通常 必要ありません です。
  • 解凍したら、ファイルを SD カード、PC、またはクラウド ストレージに転送できます。

APK を抽出する理由

「方法」に入る前に、APK バックアップ ライブラリを維持する必要がある理由を説明します。

方法 1: APK Extractor アプリを使用する (ルートなし)

最も簡単な方法は、専用のユーティリティを使用することです。 Play ストアでは、多数の「APK Extractor」アプリが入手可能です。これらのツールは、/data/app/ (読み取り可能ですが通常は非表示) でアプリのインストール パスを見つけ、その base.apk をパブリック ダウンロード フォルダーにコピーすることで機能します。

手順:

  1. 評判の良い APK Extractor をインストールします。
  2. アプリを開き、要求された場合は「ストレージ権限」を付与します。
  3. インストールされているすべてのアプリケーションのリストをスクロールします。
  4. 保存したいアプリをタップします。
  5. このツールは APK を内部ストレージに即座にコピーします。

分割 APK の処理

Facebook や WhatsApp などの複雑なアプリを抽出すると、1 つではなく複数の .apk ファイルが見つかる可能性があります。これらは分割APKです。これらを使用するには、それらを 1 つのファイルに結合するための APKS/APKM マージツール が必要です。

方法 2: ADB による手動抽出 (上級)

携帯電話に追加のアプリをインストールしたくない場合は、Android デバッグ ブリッジ (ADB) を搭載した PC を使用できます。

  1. USB 経由で携帯電話を PC に接続し、USB デバッグを有効にします。
  2. ターミナルを開いて「adb shell pm path com.example.app」と入力します。
  3. これによりパスが表示されます。例: package:/data/app/com.example.app/base.apk
  4. タイプ: adb pull /data/app/com.example.app/base.apk ./backup.apk
  5. ファイルは PC 上にあります。

抽出すると実際に得られるもの

「インストールされた」Android アプリは、特に Android アプリ バンドルとして Play ストアから提供された場合、単一の APK としてデバイスに保存されなくなりました。抽出すると、1 つまたは複数のファイルが得られる場合があります。その違いを理解すると、何を保持するかを決定するのに役立ちます。

別のデバイスにインストールするポータブル バックアップが目的の場合、通常は、(a) APK と APK の統合 で生成されたマージされた「ユニバーサル APK」、または (b) SAI などの分割 APK インストーラーがそれらを 1 つのユニットとして復元できるように、すべての分割をまとめてアーカイブする必要があります。

抽出の仕組み (ルートなし、舞台裏)

Android はシステムレベルの読み取りパスを通じてインストールされたパッケージ ファイルを公開するため、ほとんどの「APK エクストラクター」アプリは実際には root を必要としません。標準的なフローは次のとおりです。

  1. 抽出アプリは PackageManager.getPackageInfo(package, ...) を呼び出して、インストールされているアプリのリストを取得します。
  2. 選択したアプリについては、ApplicationInfo.sourceDir (ベース APK のパス、通常は /data/app/<package>-<hash>/base.apk) と splitSourceDirs (構成分割のパス) が読み取られます。
  3. ユーザーがインストールしたエクストラクターはこれらのパスを直接読み取ることはできませんが、Android の FileProvider メカニズムにより、システム コンポーネントは特定の URI への一時的な読み取りアクセスを許可できます。 OS する では、どのアプリでも 自分の APK や他のアプリの APK を URI で開くことができます。インストール パスは、アンインストールや更新などのタスクに対して常に誰でも読み取り可能であることを意図しているため、これは意図的なものです。
  4. エクストラクターは、書き込み可能なユーザー ディレクトリ (ダウンロード、アプリ内キャッシュ フォルダー、または外部ストレージ) にバイトをコピーし、共有またはインストールするファイルとして表示します。

ルート専用メソッド (su; cp /data/app/...) は API をバイパスし、生のパスを直接読み取ります。これらは高速ではなく、非システム アプリには必要ありません。

ADB経由での抽出(バックアップに推奨)

最もクリーンなアプリ以外のワークフローは ADB で、ほとんどの開発者がすでにセットアップしています。 2 つのコマンドがすべての作業を実行します。

# 1. Find the on-device path(s) for the package
adb shell pm path com.example.app

# Output (single APK):
#   package:/data/app/~~hash==/com.example.app-1/base.apk
#
# Output (split APKs):
#   package:/data/app/~~hash==/com.example.app-1/base.apk
#   package:/data/app/~~hash==/com.example.app-1/split_config.arm64_v8a.apk
#   package:/data/app/~~hash==/com.example.app-1/split_config.xxhdpi.apk
#   package:/data/app/~~hash==/com.example.app-1/split_config.en.apk

# 2. Pull each path
adb pull /data/app/~~hash==/com.example.app-1/base.apk ./

分割 APK アプリの場合は、パスごとに adb pull を繰り返します。単一のインストール可能なファイルを取得するには、すべてのファイルを APK と APK の統合 にドロップします。

抽出できないもの

抽出すると、アプリケーションのインストール ファイルが返されます。 ない は次を返します。

したがって、抽出は「インストーラーのコピーを保管しておきたい」というユースケースには適していますが、適切なデバイス全体のバックアップ (ルートまたはベンダーのツールが必要) の代替にはなりません。

抽出したAPKを分析する

アプリをバックアップしたら、オンライン スイートを使用してメタデータ、アイコン、権限を確認します。

APK分析を開始する

よくある質問 (FAQ)

アプリの抽出にはログインデータも含まれますか?

いいえ。抽出では アプリケーションコードとリソース のみがコピーされます。セキュリティ上の理由から、個人のアカウント データ、パスワード、設定は含まれません。

YouTubeなどのシステムアプリを抽出できますか?

はい。 ただし、一部のシステムアプリは特定のOSバージョンに深く依存しているため、他のデバイスには正しくインストールできない場合があります。

抽出された APK はどこに行くのでしょうか?

ほとんどの抽出アプリは、携帯電話の内部ストレージ内の 抽出されたAPK または ダウンロード という名前のフォルダーにファイルを保存します。

分割構成を失わずにインストール済みアプリをバックアップする

独自のローカル アプリ リポジトリを構築することは、お気に入りのツールへのアクセスを失わないようにする最も確実な方法です。タップしやすいアプリと ADB ターミナルの両方でそこに到達できます。どちらにしても、APKファイルを抽出する は Android デバイスを管理するための安全で実用的な方法です。ライブラリをバックアップした後、それらのバックアップを 署名を検証する して、時間が経っても改ざんされていないことを確認してください。

Mst Shaefale による設計と文書化 リード開発者兼 Android パッケージ アーキテクト • Android 12 ~ 15 で検証済み

Mst Shaefale は、クライアント側の XAPK/APKS マージ、バイナリ マニフェスト パーサー、APK v1+v2 署名ツールを xapktoapk.com で保守しています。古いコマンドや OS の変更を見つけましたか?編集メモを送信します。