インストールされている Android アプリから APK ファイルを抽出する
法的および安全上の注意: この記事は教育のみを目的としています。デバイスからの APK の抽出は、アプリケーション あなたが所有するデバイスにすでに合法的にインストールされている の個人的なバックアップを目的としています。 XAPKS から APK へは、著作権で保護されたアプリケーション、有料アプリケーション、または海賊版アプリケーションをホスト、配布、リンク、またはアクセスを促進するものではありません。 有料アプリまたは著作権で保護されたアプリから抽出した APK を再配布することは許可されていません。全規約については、免責事項 をご覧ください。
携帯電話に素晴らしいアプリがあり、何時間もかけてセットアップしたのに、Play ストアから削除されていることに気づきました。あるいは、新しいデバイスに切り替えようとしていて、万が一に備えてお気に入りのツールのオフライン コピーが必要な場合もあります。現在インストールされているアプリの APKファイルの抽出 が解決策です。
以下では、root を使用せずに携帯電話から APK を取得する方法、これがバックアップに役立つ方法、および後で オンライン分析ツール を使用して抽出されたファイルを確認する方法について説明します。
重要なポイント
- ほぼすべてのアプリの APK ファイルをデバイスの内部ストレージから直接抽出できます。
- 最近のアプリでは 分割APK が使用されることが多く、これには特殊な抽出プログラムが必要です。
- 標準アプリケーションをバックアップするためのルート (スーパーユーザー) アクセスは通常 必要ありません です。
- 解凍したら、ファイルを SD カード、PC、またはクラウド ストレージに転送できます。
APK を抽出する理由
「方法」に入る前に、APK バックアップ ライブラリを維持する必要がある理由を説明します。
- 廃止されたアプリを保存する: 開発者がストアからアプリを削除しても、インストール可能なコピーは残ります。
- レガシーハードウェアのサポート: 公式アプリが更新されて新しい Android バージョンが必要になった場合でも、古いタブレットで動作するバージョンを維持してください。
- バージョンのロールバック: アップデートによってバグが発生した場合は、抽出したバックアップを再インストールして、業務に戻ることができます。
- アプリの共有: 携帯電話データを使用せずに、Bluetooth またはケーブル経由で特定のアプリのバージョンを友人に送信します。
方法 1: APK Extractor アプリを使用する (ルートなし)
最も簡単な方法は、専用のユーティリティを使用することです。 Play ストアでは、多数の「APK Extractor」アプリが入手可能です。これらのツールは、/data/app/ (読み取り可能ですが通常は非表示) でアプリのインストール パスを見つけ、その base.apk をパブリック ダウンロード フォルダーにコピーすることで機能します。
手順:
- 評判の良い APK Extractor をインストールします。
- アプリを開き、要求された場合は「ストレージ権限」を付与します。
- インストールされているすべてのアプリケーションのリストをスクロールします。
- 保存したいアプリをタップします。
- このツールは APK を内部ストレージに即座にコピーします。
分割 APK の処理
Facebook や WhatsApp などの複雑なアプリを抽出すると、1 つではなく複数の .apk ファイルが見つかる可能性があります。これらは分割APKです。これらを使用するには、それらを 1 つのファイルに結合するための APKS/APKM マージツール が必要です。
方法 2: ADB による手動抽出 (上級)
携帯電話に追加のアプリをインストールしたくない場合は、Android デバッグ ブリッジ (ADB) を搭載した PC を使用できます。
- USB 経由で携帯電話を PC に接続し、USB デバッグを有効にします。
- ターミナルを開いて「adb shell pm path com.example.app」と入力します。
- これによりパスが表示されます。例: package:/data/app/com.example.app/base.apk
- タイプ: adb pull /data/app/com.example.app/base.apk ./backup.apk
- ファイルは PC 上にあります。
抽出すると実際に得られるもの
「インストールされた」Android アプリは、特に Android アプリ バンドルとして Play ストアから提供された場合、単一の APK としてデバイスに保存されなくなりました。抽出すると、1 つまたは複数のファイルが得られる場合があります。その違いを理解すると、何を保持するかを決定するのに役立ちます。
- 単一のベース APK。 プレーン APK として Play にアップロードされた古いアプリや小規模なアプリは、引き続き単一のファイルとしてインストールされます。抽出すると、自己完結型の 1 つの .apk が返されます。
- 基本 APK + いくつかの構成分割。 AAB として公開されたアプリは、複数の APK として並列してインストールされます。base.apk と split_config.<abi>.apk (CPU のネイティブ コード)、split_config.<density>.apk (画面のリソース)、および split_config.<language>.apk (ロケールの文字列) です。抽出するとすべてが返されます。同じアプリを同じデバイスに再インストールするには、すべてが必要です。
- アセットパックデータ、場合によっては。 Play Asset Delivery を使用する最新のゲームは、APK 自体の外部にあるアプリのプライベート キャッシュに大規模なゲームプレイ アセットを保存します。これらは通常、通常のエクストラクターではエクスポートできません。アセット パックは、最初の起動時に再フェッチされるように設計されています。
別のデバイスにインストールするポータブル バックアップが目的の場合、通常は、(a) APK と APK の統合 で生成されたマージされた「ユニバーサル APK」、または (b) SAI などの分割 APK インストーラーがそれらを 1 つのユニットとして復元できるように、すべての分割をまとめてアーカイブする必要があります。
抽出の仕組み (ルートなし、舞台裏)
Android はシステムレベルの読み取りパスを通じてインストールされたパッケージ ファイルを公開するため、ほとんどの「APK エクストラクター」アプリは実際には root を必要としません。標準的なフローは次のとおりです。
- 抽出アプリは PackageManager.getPackageInfo(package, ...) を呼び出して、インストールされているアプリのリストを取得します。
- 選択したアプリについては、ApplicationInfo.sourceDir (ベース APK のパス、通常は /data/app/<package>-<hash>/base.apk) と splitSourceDirs (構成分割のパス) が読み取られます。
- ユーザーがインストールしたエクストラクターはこれらのパスを直接読み取ることはできませんが、Android の FileProvider メカニズムにより、システム コンポーネントは特定の URI への一時的な読み取りアクセスを許可できます。 OS する では、どのアプリでも 自分の APK や他のアプリの APK を URI で開くことができます。インストール パスは、アンインストールや更新などのタスクに対して常に誰でも読み取り可能であることを意図しているため、これは意図的なものです。
- エクストラクターは、書き込み可能なユーザー ディレクトリ (ダウンロード、アプリ内キャッシュ フォルダー、または外部ストレージ) にバイトをコピーし、共有またはインストールするファイルとして表示します。
ルート専用メソッド (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 の統合 にドロップします。
抽出できないもの
抽出すると、アプリケーションのインストール ファイルが返されます。 ない は次を返します。
- アプリデータ: 環境設定、データベース、保存ファイル。これらは /data/data/<package>/ の下に存在し、ユーザー データ サンドボックスによってルート以外の抽出から保護されています。
- Play Asset Delivery アセット パック: 最初の実行時にダウンロードされ、プライベートにキャッシュされ、見つからない場合は再フェッチされることが期待されます。
- クラウドに保存された進行状況: アプリが Google Play ゲーム、Firebase などを使用している場合、クラウドに保存されている部分は、デバイス上ではなく、発行者のサーバー上にあります。
したがって、抽出は「インストーラーのコピーを保管しておきたい」というユースケースには適していますが、適切なデバイス全体のバックアップ (ルートまたはベンダーのツールが必要) の代替にはなりません。
よくある質問 (FAQ)
アプリの抽出にはログインデータも含まれますか?
いいえ。抽出では アプリケーションコードとリソース のみがコピーされます。セキュリティ上の理由から、個人のアカウント データ、パスワード、設定は含まれません。
YouTubeなどのシステムアプリを抽出できますか?
はい。 ただし、一部のシステムアプリは特定のOSバージョンに深く依存しているため、他のデバイスには正しくインストールできない場合があります。
抽出された APK はどこに行くのでしょうか?
ほとんどの抽出アプリは、携帯電話の内部ストレージ内の 抽出されたAPK または ダウンロード という名前のフォルダーにファイルを保存します。
分割構成を失わずにインストール済みアプリをバックアップする
独自のローカル アプリ リポジトリを構築することは、お気に入りのツールへのアクセスを失わないようにする最も確実な方法です。タップしやすいアプリと ADB ターミナルの両方でそこに到達できます。どちらにしても、APKファイルを抽出する は Android デバイスを管理するための安全で実用的な方法です。ライブラリをバックアップした後、それらのバックアップを 署名を検証する して、時間が経っても改ざんされていないことを確認してください。