Mục lục
Trích xuất APK có nghĩa là sao chép tệp gói của ứng dụng đã cài ra khỏi điện thoại, bằng ứng dụng trích xuất hoặc bằng hai lệnh ADB (pm path và adb pull). Việc này chạy không cần root với mọi ứng dụng bạn đã cài, và cho bạn một bản sao lưu nguyên byte để lưu trữ, chia sẻ hoặc dùng làm nền mod sau này.
Thuộc trung tâm mod: Cách mod APK · Lưu trữ: APK được lưu ở đâu · Liên quan: Xuất từ Android Studio.
Có hai việc thường bị gộp chung dưới cụm từ này. Sao chép gói ra khỏi điện thoại là trích xuất, phần được nói ở đây. Giải nén kho lưu trữ để đọc bên trong là một nhiệm vụ riêng và cần trình decompile thay thế. Mọi thứ bên dưới đều nói về việc sao chép.
Trích xuất APK nghĩa là gì?
Trích xuất sao chép các tệp gói đã cài, base.apk cộng mọi tệp split, từ vùng lưu trữ ứng dụng của Android sang vùng lưu trữ chung hoặc sang máy tính; kết quả giữ nguyên phiên bản đã cài để lưu trữ hoặc kiểm tra, miễn là bạn thu thập đủ mọi split cần thiết và giữ các tệp cạnh nhau.
Lấy APK của một ứng dụng đã cài
Mỗi ứng dụng đã cài đều có ít nhất một tệp APK trên đĩa. Trình quản lý gói biết đường dẫn, và có hai công cụ đọc được nó: một ứng dụng trình quản lý tệp trên điện thoại, hoặc ADB từ máy tính. Cả hai đều đọc cùng một tệp.
Giải nén một tệp APK
Giải nén thì khác. Nghĩa là mở ZIP và trích xuất classes.dex, manifest và tài nguyên để kiểm tra. Việc đó cần trình decompile như JADX hoặc APKTool, chứ không phải trình trích xuất.
Hai nhiệm vụ khác nhau
Nếu mục tiêu của bạn là sao lưu, truyền tệp hoặc tạo nền cho một bản mod, bạn cần trích xuất. Nếu mục tiêu là đọc mã nguồn hoặc thay đổi thứ gì đó bên trong, bạn cần giải nén. Trích xuất trước, rồi mới giải nén bản sao, không bao giờ giải nén bản cài đang chạy.
Phương pháp 1: Dùng ứng dụng trích xuất APK
Ứng dụng trích xuất liệt kê các gói đã cài, cho bạn chọn một gói rồi ghi các tệp APK của nó vào vùng lưu trữ chung; đây là lựa chọn chỉ cần điện thoại khi bạn muốn sao lưu vài ứng dụng mà không phải thiết lập máy tính, cáp hay lệnh terminal.
Từng bước
- Cài một trình trích xuất từ nguồn bạn tin tưởng.
- Mở nó và tìm ứng dụng trong danh sách.
- Chạm vào ứng dụng, chọn trích xuất và chọn thư mục đích.
- Kiểm tra tệp hiện ra trong trình quản lý tệp với dung lượng bạn mong đợi.
Tệp APK được lưu ở đâu
Hầu hết trình trích xuất mặc định ghi vào /storage/emulated/0/ExtractedApks/ hoặc thẳng vào Download/. Hãy kiểm tra cài đặt của ứng dụng nếu bạn không tìm thấy, và chuyển tệp đến chỗ gọn gàng trước khi nó bị chôn dưới một trăm tệp tải về.
Phương pháp 2: Dùng ADB
ADB sao chép tệp trực tiếp từ thiết bị đang kết nối đến một đích rõ ràng, không qua ứng dụng trích xuất trung gian; hãy dùng nó khi bạn cần lệnh có thể lặp lại, đường dẫn đầu ra nhìn thấy được, hoặc sao lưu nhiều gói, gồm cả các tệp split do trình quản lý gói báo ra.
adb shell pm path
adb shell pm path com.example.app
Đầu ra in ra package:/data/app/~~random/com.example.app-random/base.apk. Đó là đường dẫn cần pull. Với gói chia nhỏ, lệnh in ra một dòng cho mỗi tệp split, và mọi dòng trong số đó đều quan trọng. Tài liệu ADB của Google liệt kê pm path trong số các lệnh của trình quản lý gói.
adb pull
adb pull /data/app/~~random/com.example.app-random/base.apk ./app.apk
Tệp nằm trên đĩa nguyên byte với bản đã cài. Hướng dẫn cài đặt ADB đầy đủ, gồm cả ghép cặp không dây, nằm trong hướng dẫn cài APK bằng ADB.
Trích xuất APK chia nhỏ
Khi pm path in ra nhiều hơn một dòng, hãy sao chép tất cả và giữ nguyên tên của chúng. Cài lại chỉ phần base cho bạn một ứng dụng crash khi khởi động, vì split chứa tài nguyên cho độ phân giải màn hình hoặc ABI của bạn không bao giờ được nạp.
Liệt kê mọi đường dẫn gói một lần
Để pull nhiều ứng dụng trong một lần, hãy viết vòng lặp thay vì bấm lần lượt qua danh sách ứng dụng:
for p in com.a.app com.b.app; do
adb shell pm path $p | sed 's/package://' | while read f; do
adb pull "$f" "./backups/$p/"
done
done
Mỗi ứng dụng nằm trong thư mục riêng với toàn bộ bộ split nguyên vẹn. Sao lưu một trăm ứng dụng mất khoảng bốn phút trên USB 2.0 và khoảng nửa thời gian đó qua một kết nối Wi-Fi đã ghép cặp.
So sánh các phương pháp
Ứng dụng trích xuất, ADB và Android Studio đều sao chép được tệp gói đã cài, nhưng con đường đúng phụ thuộc vào việc bạn chỉ dùng điện thoại, đã có máy tính kết nối, hay cần thu thập APK chia nhỏ thành một bộ đầy đủ.
| Phương pháp | Cần root | Bộ split | Tốc độ | Đầu ra |
|---|---|---|---|---|
| Ứng dụng trích xuất | Không | Thường tự xử lý | 10 giây mỗi ứng dụng | Vùng lưu trữ chung |
| ADB pull | Không | Rõ ràng, mọi tệp | Vài giây mỗi ứng dụng | Bất kỳ thư mục nào trên PC |
| MT Manager | Không | Tự xử lý | 10 giây mỗi ứng dụng | Bất kỳ thư mục nào trên điện thoại |
Cả ba sao chép cùng một byte. Khác biệt nằm ở việc sắp xếp: ADB khiến bạn phải tự lo cho từng tệp split, còn các công cụ dạng ứng dụng tự gom bộ cho bạn.
Phương pháp 3: Dùng MT Manager
MT Manager hoạt động như một trình trích xuất phía điện thoại: nó liệt kê các ứng dụng đã cài, hiển thị chi tiết gói và ghi tệp vào một thư mục bạn chọn; hữu ích khi bước tiếp theo là chỉnh sửa APK ngay trên chính thiết bị đó, với hướng dẫn của nó giải thích quy trình đó.
Trích xuất từ danh sách ứng dụng
Mở MT Manager, dùng chế độ xem danh sách APK, tìm ứng dụng và chọn trích xuất. Với gói chia nhỏ, công cụ gom cả bộ lại, đúng là trường hợp mà việc sao chép tay qua ADB hay làm hỏng.
Sau đó chỉnh sửa hoặc ký
Vì MT Manager cũng là một trình biên tập, bạn có thể đi thẳng từ trích xuất sang mod bản sao của bạn. Trích xuất trước, nhân bản tệp, rồi mới mở bản nhân trong trình chỉnh sửa DEX hoặc Arsc. Khi việc sửa xong, hướng dẫn ký lo phần chứng chỉ.
Cách trích xuất APK từ một PC
Khi bật gỡ lỗi USB, một máy tính chạy được lệnh ADB và lưu tệp gói vào một thư mục rõ ràng; con đường này hợp với những lần sao lưu có thể lặp lại, còn Android Studio cung cấp đường đi đồ họa cho người thích Device Explorer hơn terminal.
Android Studio Device Explorer
Mở Device File Explorer, điều hướng đến thư mục ứng dụng dưới /data/app, nhấp chuột phải vào APK và lưu lại. Trình khám phá hiển thị đúng các đường dẫn mà ADB báo, nên hữu ích khi bạn đã ở sâu trong một dự án.
Pull qua USB hoặc Wi-Fi
Cùng các lệnh như trên, chạy từ bất kỳ terminal nào có adb trên PATH. Qua Wi-Fi, ghép cặp một lần với adb pair rồi làm việc không cần cáp. Bước pull giữ nguyên.
Cách trích xuất APK chia nhỏ và XAPK
Nhiều bản cài hiện đại dùng gói chia nhỏ, với base.apk bên cạnh các tệp như split_config.arm64_v8a.apk và split_config.en.apk; hãy thu thập base cùng mọi split cần thiết, vì bản sao chỉ có base có thể cài hoặc chạy không đúng.
APK chia nhỏ là gì
Split tồn tại để một lượt tải chỉ chứa mã và tài nguyên mà thiết bị đó cần. Một điện thoại ở một khu vực, trên một CPU, dùng một ngôn ngữ sẽ tải về một lát nhỏ hơn của ứng dụng so với gói universal đầy đủ.
Trích xuất cả bộ
adb shell pm path liệt kê mọi tệp trong bộ. Pull tất cả vào một thư mục và đừng đụng vào tên, vì trình cài đặt khớp các split theo tên tệp vào lúc cài. Điều tương tự áp dụng cho một XAPK, tức là một bundle APK để các split bên trong một container.
Cài lại thành bộ
adb install-multiple base.apk split_config.arm64_v8a.apk split_config.en.apk
Hoặc dùng một công cụ hiểu container đó. Chi tiết cài các bundle nằm trong hướng dẫn cài XAPK.
Cách trích xuất mọi ứng dụng trên điện thoại
Trích xuất hàng loạt lặp lại việc tra đường dẫn và sao chép tệp cho mỗi gói mà thiết bị báo ra; hãy lưu mỗi đầu ra kèm tên gói và phiên bản để một kho lưu trữ lớn vẫn nhận dạng được khi bạn cần khôi phục một ứng dụng sau một bản cập nhật tương lai.
Giữ phiên bản, không chỉ ứng dụng
Một bản sao lưu của một thời điểm sẽ cũ đi ngay lần đầu ứng dụng cập nhật. Ghi mã phiên bản cạnh mỗi tệp, lấy từ dumpsys package <pkg> | grep versionName hoặc từ màn hình Giới thiệu của ứng dụng, để sau một năm bạn biết mình đang cầm build nào.
Lưu kho ở đâu
Ổ đĩa cục bộ là ổn cho một vài tệp. Với kho lưu trữ cả thiết bị, hãy dùng ổ bạn kiểm soát thay vì một thư mục đám mây tái mã hóa hoặc loại bỏ siêu dữ liệu, và giữ hai bản nếu các tệp quan trọng. APK nhỏ: một trăm ứng dụng thường rơi vào khoảng 8 đến 15 GB.
Lỗi trích xuất thường gặp
Các lỗi trích xuất thường gặp gồm truy cập tệp bị từ chối, bộ split không đầy đủ và đường dẫn gói thay đổi sau một bản cập nhật; hãy xác định tình huống nào đang áp dụng trước khi lặp lại thao tác sao chép, vì mỗi vấn đề cần một cách sửa khác nhau trên máy tính hoặc điện thoại đang chạy việc trích xuất.
Từ chối quyền truy cập
Nếu ADB từ chối bản sao chép, ứng dụng nằm ở một vị trí được bảo vệ hoặc thiết bị không cho phép truy cập gỡ lỗi vào nó. Ứng dụng trích xuất cũng đụng đúng bức tường đó với các gói hệ thống. Cả hai dấu hiệu đều không có nghĩa APK đã biến mất, chỉ là con đường này không đọc được nó.
Thiếu APK chia nhỏ
Chỉ pull base.apk từ một bản cài split tạo ra một tệp cài được rồi crash, hoặc từ chối cài luôn. Luôn kiểm tra pm path in ra bao nhiêu đường dẫn, và sao chép tất cả.
Sai đường dẫn tệp
Các đường dẫn dưới /data/app chứa hậu tố ngẫu nhiên thay đổi ở mỗi bản cập nhật. Hãy chạy lại pm path thay vì dùng lại đường dẫn cũ, và kiểm tra kỹ các ký tự ~~ còn nguyên vẹn sau khi copy-paste.
Làm gì với APK đã trích xuất
Một tệp đã trích xuất ghi lại phiên bản gói tại thời điểm bạn sao chép, khiến nó hữu ích cho lần cài lại, truyền tệp hoặc kiểm tra sau này; hãy giữ phiên bản và ngày tháng cùng bản sao lưu, vì ứng dụng có thể đã cập nhật kể từ lúc bạn trích xuất.
- Sao lưu: giữ các bản có ghi ngày để bạn cài lại một phiên bản cũ sau này. Hướng dẫn sao lưu biến những lần trích xuất nhất thời thành một quy trình lưu trữ thật sự.
- Chia sẻ: gửi tệp sang điện thoại khác qua Quick Share hoặc một ứng dụng truyền tệp.
- Kiểm tra: giải nén một bản sao bằng trình decompile để xem quyền, mã nguồn và tài nguyên.
- Mod: nhân bản nó và bắt đầu chỉnh sửa, theo trụ cột mod.
Kiểm tra những gì bạn có
Trước khi tin một bản trích xuất, hãy so dung lượng với những gì thiết bị báo và xác nhận tệp mở ra là một ZIP hợp lệ. Tệp zero-byte hoặc bản pull bị cắt có nghĩa việc sao chép đã hỏng lặng lẽ, đó là lỗi ADB phổ biến nhất với cáp chập chờn.
Giữ bản ghi phiên bản
Ghi tên gói, mã phiên bản và ngày trích xuất cạnh mỗi tệp. Sáu tháng sau, khi ứng dụng đã cập nhật ba lần, bản ghi đó là cách duy nhất để biết bạn đang cầm build nào. dumpsys package <pkg> in ra cả hai con số trên một thiết bị đang kết nối.
Trích xuất so với tải một bản mới
Trích xuất sao chép các tệp gói đang cài trên điện thoại của bạn, gồm cả các split cần thiết, trong khi một lượt tải mới có thể là một build hoặc bộ gói khác; hãy chọn dựa trên việc bạn cần giữ phiên bản mình đang có hay lấy bản phát hành hiện tại của nhà phát triển.
Khi nào trích xuất thắng
Quay lui sau một bản cập nhật tồi, giữ lại một phiên bản đã bị gỡ khỏi cửa hàng, hoặc sao chép ứng dụng sang một thiết bị không có quyền truy cập cửa hàng. Cả ba đều cần tệp bạn đang cầm, không phải một lượt tải mới có thể đã không còn tồn tại.
Khi nào tải về thắng
Bản sao đã cài bị hỏng, ứng dụng được sideload từ một nguồn không đáng tin, hoặc bạn muốn APK universal thay vì split của thiết bị. Trong các trường hợp đó, hãy pull từ các trang tải APK đã kiểm duyệt thay vì sao chép những gì đang có trên điện thoại.
Các bước sao lưu và khôi phục nằm trong hướng dẫn sao lưu APK. Bắt đầu với một lần trích xuất qua ADB, xác nhận dung lượng tệp khớp với những gì thiết bị báo, rồi xây thói quen pull mọi gói bạn quan tâm trước khi bản cập nhật ập tới.
Điểm chính
- Trích xuất sao chép gói đã cài. Nó không giải nén kho lưu trữ.
- ADB (pm path + pull) cho tệp nguyên byte mà không cần root.
- APK chia nhỏ phải được sao chép và cài lại thành một bộ đầy đủ.
Các câu hỏi thường gặp
Làm sao tôi trích xuất APK từ một ứng dụng?
Dùng ứng dụng trích xuất: mở nó, chọn ứng dụng trong danh sách, chạm trích xuất, rồi tệp APK nằm trong vùng lưu trữ chung. Cùng việc đó chạy qua ADB với pm path để tìm tệp và adb pull để sao chép.
Tôi có thể trích xuất APK mà không cần root không?
Có. Các ứng dụng bạn đã cài nằm ở vị trí có thể đọc được, nên cả ứng dụng trích xuất lẫn ADB đều với tới chúng mà không cần root. Root chỉ cần khi kéo ứng dụng hệ thống ra khỏi phân vùng hệ thống chỉ đọc. Việc sao lưu hằng ngày không cần gì đặc biệt.
Làm sao tôi trích xuất APK hệ thống?
Ứng dụng hệ thống nằm dưới /system hoặc /product, nơi người dùng thường không có quyền truy cập tệp trực tiếp. Lệnh pm path của ADB có thể lộ đường dẫn gói, nhưng việc sao chép vẫn có thể cần root hoặc quyền truy cập riêng theo thiết bị. Hãy để phân vùng hệ thống yên trừ khi bạn hiểu rõ những rủi ro đó.
APK đã trích xuất đi đâu?
Ứng dụng trích xuất mặc định dùng một thư mục trong vùng lưu trữ chung như /storage/emulated/0/ExtractedApks hoặc /Download. Với ADB, đích là nơi bạn trỏ adb pull, nên một đường dẫn rõ ràng như ./backups/app.apk tránh được bất ngờ sau này trên hầu hết thiết bị.
Làm sao tôi trích xuất APK chia nhỏ?
Chạy adb shell pm path com.example.app và sao chép mọi đường dẫn nó in ra, gồm base lẫn các tệp split. Giữ nguyên tên và cài lại cả bộ bằng adb install-multiple, vì base thiếu split sẽ crash hoặc từ chối cài.
Ứng dụng trích xuất APK nào tốt nhất?
Bất kỳ trình trích xuất nào hiển thị tên gói và lưu tệp nguyên vẹn đều chạy được, và MT Manager kiêm luôn việc đó với chế độ xem danh sách APK. Dù chọn gì, hãy tải chính trình trích xuất từ nguồn tin cậy và kiểm tra những gì nó đưa cho bạn.
Làm sao tôi trích xuất APK qua ADB?
Kết nối điện thoại, chạy adb shell pm path <package> để in đường dẫn thật, rồi adb pull <path> ./app.apk. Hai lệnh, không root, đầu ra nguyên byte, và chạy được qua Wi-Fi bằng adb connect. Hãy viết kịch bản cho việc xử lý hàng loạt.
Tôi có thể trích xuất APK trên PC không?
Có, khi điện thoại được kết nối. Device Explorer của Android Studio hiển thị các gói đã cài và cho phép pull tệp, còn ADB thường làm tương tự từ bất kỳ terminal nào. Cách nào cũng không cần ứng dụng cài trên chính điện thoại hay quyền root.
Vì sao tôi không trích xuất được một số ứng dụng?
Ứng dụng được bảo vệ, ứng dụng lưu APK bên trong phân vùng chỉ đọc và ứng dụng có phiên cài đặt riêng tư có thể không hiện ra hoặc từ chối sao chép. Instant app và gói phát trực tuyến cũng không có một tệp duy nhất để pull. Những giới hạn này là chủ ý.
Làm sao tôi cài lại APK đã trích xuất?
Sao chép tệp vào thiết bị, bật nguồn không rõ cho trình quản lý tệp của bạn và mở nó để cài. Nếu nó thay thế một ứng dụng đang có, chữ ký phải khớp, nếu không hãy gỡ trước và chấp nhận mất dữ liệu cục bộ. Hãy sao lưu dữ liệu từ trước.