從已安裝的 Android 應用程式中提取 APK 文件
法律與安全注意事項: 本文僅用於教育目的。從裝置中提取 APK 旨在用於應用程式 您已經合法安裝在您擁有的設備上 的個人備份。 XAPK 至 APK 不會託管、散佈、連結或協助存取受版權保護、付費或盜版的應用程式。 不允許重新分發付費或受版權保護的應用程式的提取 APK。請參閱我們的 免責聲明 以了解完整條款。
您的手機上有一個很棒的應用程序,您花了幾個小時來設置,卻發現它已從 Play 商店中刪除。或者,您可能正在切換到新設備,並且想要一份您最喜歡的工具的離線副本,以防萬一。目前安裝的應用程式中的 提取APK文件 就是解決方案。
以下我們將介紹如何在沒有 root 的情況下從手機上提取 APK,這對於備份非常方便,以及如何使用我們的 線上分析工具 檢查提取的檔案。
重點
- 您可以直接從裝置的內部儲存中提取幾乎所有應用程式的 APK 檔案。
- 現代應用程式經常使用 拆分 APK,這需要專門的提取器。
- 根(超級用戶)存取權通常為 不需要 以備份標準應用程式。
- 解壓縮後,您可以將檔案傳輸到 SD 卡、PC 或雲端儲存。
為什麼要提取 APK?
在開始討論「如何做」之前,以下是您應該維護 APK 備份庫的原因:
- 保留已停止使用的應用程式: 如果開發人員從商店中刪除他們的應用程序,您仍然擁有可安裝的副本。
- 舊版硬體支援: 當官方應用程式更新為需要更新的 Android 版本時,保留可在舊平板電腦上運行的版本。
- 版本回滾: 如果更新引入了錯誤,您可以重新安裝提取的備份並還原正常工作。
- 應用程式共享: 透過藍牙或電纜向朋友發送特定的應用程式版本,無需使用蜂窩數據。
方法1:使用APK提取應用程式(無需Root)
最簡單的方法是使用專用實用程式。 Play 商店中有數十種「APK Extractor」應用程式。這些工具的工作原理是在 /data/app/(可讀但通常隱藏)中查找應用程式的安裝路徑,並將 base.apk 複製到您的公共下載資料夾。
步驟:
- 安裝信譽良好的 APK 提取器。
- 打開應用程式並根據要求授予“儲存權限”。
- 捲動瀏覽所有已安裝應用程式的清單。
- 點擊您要儲存的應用程式。
- 該工具會立即將 APK 複製到您的內部儲存。
處理拆分 APK
如果您提取 Facebook 或 WhatsApp 等複雜應用程序,您可能會發現多個 .apk 文件,而不是一個。這些是 拆分 APK。要使用它們,您需要我們的 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
- 該檔案現在位於您的電腦上!
提取時實際得到什麼
「已安裝」的 Android 應用程式不再以單一 APK 儲存在裝置上,尤其是當它作為 Android 應用程式套件來自 Play 商店時。解壓縮時,您可能會得到一個或多個文件,了解差異可以幫助您決定保留哪些文件:
- 單一基礎 APK。 作為普通 APK 上傳到 Play 的較舊或較小的應用程式仍作為單一檔案安裝。提取返回一個獨立的 .apk。
- 以 AAB 形式發布的 基本 APK + 幾個配置拆分。 應用程式會以多個 APK 並排安裝:base.apk 加 split_config.<abi>.apk(CPU 的本機程式碼)、split_config.<density>.apk(螢幕的資源)和 split_config.<language>.apk(區域設定的字串)。提取會返回所有這些內容。要在同一裝置上重新安裝相同應用程序,您需要全部這些。
- 有時是資產包資料。 使用 Play Asset Delivery 的現代遊戲將大型遊戲資產儲存在 APK 本身外部的應用程式私人快取中。這些通常無法使用常規提取器導出;資源包設計為在首次啟動時重新獲取。
如果您的目標是要安裝在另一台裝置上的便攜式備份,您通常需要 (a) 使用我們的 APKS 到 APK 合併 產生的合併的“通用 APK”,或 (b) 將所有分割存檔在一起,以便 SAI 等拆分 APK 安裝程式可以將它們還原為一個單元。
提取是如何工作的(無根,幕後)
大多數「APK 提取器」應用程式實際上不需要 root,因為 Android 透過系統級讀取路徑公開已安裝的套件檔案。標準流程為:
- 提取器應用程式呼叫 PackageManager.getPackageInfo(package, ...) 來取得已安裝應用程式的清單。
- 對於所選應用程序,它會讀取 ApplicationInfo.sourceDir(基本 APK 的路徑,通常為 /data/app/<package>-<hash>/base.apk)和 splitSourceDirs(任何配置拆分的路徑)。
- 使用者安裝的提取器無法直接讀取這些路徑,但Android中的FileProvider機制允許系統元件授予對特定URI的臨時讀取存取權限。 OS 做允許任何應用程式透過URI開啟其自己的 APK和其他應用程式的APK;這是故意的,因為安裝路徑對於卸載和更新等任務始終是世界可讀的。
- 提取器將位元組複製到可寫入使用者目錄(下載、應用程式內快取資料夾或外部儲存),並將它們作為檔案呈現以共享或安裝。
僅根方法 (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 合併 上。
無法擷取的內容
提取將返回應用程式的安裝檔。它返回 不是:
- 應用程式數據:首選項、資料庫、儲存檔案。它們位於 /data/data/<package>/ 下,並受到用戶資料沙箱的保護,免受非根提取。
- 玩資產交付資產包:首次運行時下載,私有緩存,如果遺失預計將重新取得。
- 雲端保存進度:如果應用程式使用 Google Play Games、Firebase 或類似產品,則雲端儲存部分位於發布商的伺服器上,而不是您的裝置上。
因此,提取對於「我想要保留安裝程式的副本」用例很有用,但不能取代正確的全裝置備份(需要根或供應商工具)。
常見問題 (FAQ)
提取應用程式是否包含我的登入資料?
不會。提取僅複製 應用程式程式碼和資源。出於安全原因,它不包括您的個人帳戶資料、密碼或設定。
我可以提取 YouTube 等系統應用程式嗎?
是的。但是,某些系統應用程式可能對特定作業系統版本具有深度依賴性,並且可能無法在其他裝置上正確安裝。
提取的 APK 去哪了?
大多數提取器應用程式將檔案保存到手機內部儲存中名為 提取的APK 或 下載 的資料夾中。
備份已安裝的應用程式而不丟失拆分配置
建立您自己的本機應用程式儲存庫是永遠不會失去對您喜愛的工具的存取的最可靠方法。輕觸友善的應用程式和 ADB 終端都可以幫助您實現這一目標,無論哪種方式,提取APK文件 都是管理 Android 裝置的安全、實用的方法。備份庫後,請花一些時間查看這些備份,以便您知道它們不會隨著時間的推移而被篡改 (驗證簽名)。