從已安裝的 Android 應用程式中提取 APK 文件

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

法律與安全注意事項: 本文僅用於教育目的。從裝置中提取 APK 旨在用於應用程式 您已經合法安裝在您擁有的設備上 的個人備份。 XAPK 至 APK 不會託管、散佈、連結或協助存取受版權保護、付費或盜版的應用程式。 不允許重新分發付費或受版權保護的應用程式的提取 APK。請參閱我們的 免責聲明 以了解完整條款。

您的手機上有一個很棒的應用程序,您花了幾個小時來設置,卻發現它已從 Play 商店中刪除。或者,您可能正在切換到新設備,並且想要一份您最喜歡的工具的離線副本,以防萬一。目前安裝的應用程式中的 提取APK文件 就是解決方案。

以下我們將介紹如何在沒有 root 的情況下從手機上提取 APK,這對於備份非常方便,以及如何使用我們的 線上分析工具 檢查提取的檔案。

重點

  • 您可以直接從裝置的內部儲存中提取幾乎所有應用程式的 APK 檔案。
  • 現代應用程式經常使用 拆分 APK,這需要專門的提取器。
  • 根(超級用戶)存取權通常為 不需要 以備份標準應用程式。
  • 解壓縮後,您可以將檔案傳輸到 SD 卡、PC 或雲端儲存。

為什麼要提取 APK?

在開始討論「如何做」之前,以下是您應該維護 APK 備份庫的原因:

方法1:使用APK提取應用程式(無需Root)

最簡單的方法是使用專用實用程式。 Play 商店中有數十種「APK Extractor」應用程式。這些工具的工作原理是在 /data/app/(可讀但通常隱藏)中查找應用程式的安裝路徑,並將 base.apk 複製到您的公共下載資料夾。

步驟:

  1. 安裝信譽良好的 APK 提取器。
  2. 打開應用程式並根據要求授予“儲存權限”。
  3. 捲動瀏覽所有已安裝應用程式的清單。
  4. 點擊您要儲存的應用程式。
  5. 該工具會立即將 APK 複製到您的內部儲存。

處理拆分 APK

如果您提取 Facebook 或 WhatsApp 等複雜應用程序,您可能會發現多個 .apk 文件,而不是一個。這些是 拆分 APK。要使用它們,您需要我們的 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. 該檔案現在位於您的電腦上!

提取時實際得到什麼

「已安裝」的 Android 應用程式不再以單一 APK 儲存在裝置上,尤其是當它作為 Android 應用程式套件來自 Play 商店時。解壓縮時,您可能會得到一個或多個文件,了解差異可以幫助您決定保留哪些文件:

如果您的目標是要安裝在另一台裝置上的便攜式備份,您通常需要 (a) 使用我們的 APKS 到 APK 合併 產生的合併的“通用 APK”,或 (b) 將所有分割存檔在一起,以便 SAI 等拆分 APK 安裝程式可以將它們還原為一個單元。

提取是如何工作的(無根,幕後)

大多數「APK 提取器」應用程式實際上不需要 root,因為 Android 透過系統級讀取路徑公開已安裝的套件檔案。標準流程為:

  1. 提取器應用程式呼叫 PackageManager.getPackageInfo(package, ...) 來取得已安裝應用程式的清單。
  2. 對於所選應用程序,它會讀取 ApplicationInfo.sourceDir(基本 APK 的路徑,通常為 /data/app/<package>-<hash>/base.apk)和 splitSourceDirs(任何配置拆分的路徑)。
  3. 使用者安裝的提取器無法直接讀取這些路徑,但Android中的FileProvider機制允許系統元件授予對特定URI的臨時讀取存取權限。 OS 做允許任何應用程式透過URI開啟其自己的 APK和其他應用程式的APK;這是故意的,因為安裝路徑對於卸載和更新等任務始終是世界可讀的。
  4. 提取器將位元組複製到可寫入使用者目錄(下載、應用程式內快取資料夾或外部儲存),並將它們作為檔案呈現以共享或安裝。

僅根方法 (su; cp /data/app/...) 繞過 API 並直接讀取原始路徑。它們並不更快,對於非系統應用程式來說也不是必需的。

透過 ADB 提取(建議用於備份)

最乾淨的非應用程式工作流程是 ADB,大多數開發人員已經設定了它。兩個指令完成整個工作:

# 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。若要取得單一可安裝文件,請將它們全部放到我們的 APKS 到 APK 合併 上。

無法擷取的內容

提取將返回應用程式的安裝檔。它返回 不是:

因此,提取對於「我想要保留安裝程式的副本」用例很有用,但不能取代正確的全裝置備份(需要根或供應商工具)。

分析您擷取的 APK

備份應用程式後,請使用我們的線上套件檢查其元資料、圖示和權限。

開始APK分析

常見問題 (FAQ)

提取應用程式是否包含我的登入資料?

不會。提取僅複製 應用程式程式碼和資源。出於安全原因,它不包括您的個人帳戶資料、密碼或設定。

我可以提取 YouTube 等系統應用程式嗎?

是的。但是,某些系統應用程式可能對特定作業系統版本具有深度依賴性,並且可能無法在其他裝置上正確安裝。

提取的 APK 去哪了?

大多數提取器應用程式將檔案保存到手機內部儲存中名為 提取的APK 或 下載 的資料夾中。

備份已安裝的應用程式而不丟失拆分配置

建立您自己的本機應用程式儲存庫是永遠不會失去對您喜愛的工具的存取的最可靠方法。輕觸友善的應用程式和 ADB 終端都可以幫助您實現這一目標,無論哪種方式,提取APK文件 都是管理 Android 裝置的安全、實用的方法。備份庫後,請花一些時間查看這些備份,以便您知道它們不會隨著時間的推移而被篡改 (驗證簽名)。

由 Shaefale 女士設計並記錄 首席開發人員和 Android 套件架構師 • 在 Android 12–15 上經過驗證

Mst Shaefale 在 xapktoapk.com 維護用戶端 XAPK/APKS 合併、二進位清單解析器和 APK v1+v2 簽章工具。發現過時的命令或作業系統變更?發送編輯說明。