Trích xuất tệp APK từ ứng dụng Android đã cài đặt của bạn
Thông báo pháp lý & an toàn: Bài viết này chỉ dành cho mục đích giáo dục. Việc trích xuất APK từ thiết bị nhằm mục đích sao lưu cá nhân các ứng dụng bạn đã được cài đặt hợp pháp trên thiết bị mà bạn sở hữu. XAPK to APK không lưu trữ, phân phối, liên kết đến hoặc tạo điều kiện truy cập vào các ứng dụng có bản quyền, trả phí hoặc vi phạm bản quyền. Không được phép phân phối lại APK đã trích xuất của ứng dụng trả phí hoặc có bản quyền. Xem Tuyên bố miễn trừ trách nhiệm của chúng tôi để biết các điều khoản đầy đủ.
Bạn có một ứng dụng tuyệt vời trên điện thoại mà bạn đã dành hàng giờ để thiết lập nhưng phát hiện ra rằng ứng dụng này đã bị xóa khỏi Cửa hàng Play. Hoặc có thể bạn đang chuyển sang một thiết bị mới và muốn có bản sao ngoại tuyến của các công cụ yêu thích của mình để đề phòng. Giải nén tập tin APK từ các ứng dụng hiện được cài đặt của bạn là giải pháp.
Dưới đây, chúng tôi hướng dẫn cách kéo APK ra khỏi điện thoại của bạn mà không cần root, tính năng này hữu ích cho việc sao lưu và cách kiểm tra tệp được giải nén sau đó bằng công cụ phân tích trực tuyến của chúng tôi.
Bài học chính
- Bạn có thể trích xuất hầu hết mọi tệp APK của ứng dụng trực tiếp từ bộ nhớ trong của thiết bị.
- Các ứng dụng hiện đại thường sử dụng Chia APK, yêu cầu trình giải nén chuyên dụng.
- Quyền truy cập root (Superuser) nói chung là không bắt buộc để sao lưu các ứng dụng tiêu chuẩn.
- Sau khi giải nén, bạn có thể chuyển tệp sang thẻ SD, PC hoặc bộ lưu trữ đám mây.
Tại sao phải trích xuất APK?
Trước khi chuyển sang phần "làm thế nào", đây là lý do tại sao bạn nên duy trì thư viện sao lưu APK:
- Bảo tồn các ứng dụng đã ngừng sản xuất: Nếu nhà phát triển xóa ứng dụng của họ khỏi cửa hàng, bạn vẫn có bản sao có thể cài đặt của mình.
- Hỗ trợ phần cứng kế thừa: Giữ các phiên bản hoạt động trên máy tính bảng cũ của bạn khi ứng dụng chính thức cập nhật để yêu cầu các phiên bản Android mới hơn.
- Khôi phục phiên bản: Nếu bản cập nhật có lỗi, bạn có thể cài đặt lại bản sao lưu đã giải nén và hoạt động trở lại.
- Chia sẻ ứng dụng: Gửi phiên bản ứng dụng cụ thể cho bạn bè qua Bluetooth hoặc cáp mà không sử dụng dữ liệu di động.
Cách 1: Sử dụng ứng dụng giải nén APK (Không cần root)
Cách dễ nhất là sử dụng một tiện ích chuyên dụng. Có hàng tá ứng dụng "Trình giải nén APK" có sẵn trên Cửa hàng Play. Các công cụ này hoạt động bằng cách tìm đường dẫn cài đặt của ứng dụng trong /data/app/ (có thể đọc được nhưng thường bị ẩn) và sao chép base.apk vào thư mục Tải xuống công khai của bạn.
Các bước:
- Cài đặt Trình trích xuất APK uy tín.
- Mở ứng dụng và cấp "Quyền lưu trữ" nếu được yêu cầu.
- Cuộn qua danh sách tất cả các ứng dụng đã cài đặt.
- Nhấn vào ứng dụng bạn muốn lưu.
- Công cụ sẽ ngay lập tức sao chép APK vào bộ nhớ trong của bạn.
Xử lý APK phân chia
Nếu bạn trích xuất một ứng dụng phức tạp như Facebook hoặc WhatsApp, bạn có thể tìm thấy một số tệp .apk thay vì một tệp. Đây là Chia APK. Để sử dụng chúng, bạn sẽ cần Công cụ hợp nhất APKS/APKM của chúng tôi để kết hợp chúng thành một tệp duy nhất.
Cách 2: Trích xuất thủ công qua ADB (Nâng cao)
Nếu không muốn cài thêm ứng dụng trên điện thoại, bạn có thể sử dụng PC có Cầu gỡ lỗi Android (ADB):
- Kết nối điện thoại của bạn với PC qua USB và bật Gỡ lỗi USB.
- Mở terminal và gõ: adb shell pm path com.example.app
- Điều này sẽ hiển thị đường dẫn. Ví dụ: package:/data/app/com.example.app/base.apk
- Loại: adb pull /data/app/com.example.app/base.apk ./backup.apk
- Tệp hiện đã có trên PC của bạn!
Những gì bạn thực sự nhận được khi giải nén
Ứng dụng Android "đã cài đặt" không còn được lưu trữ trên thiết bị dưới dạng một APK duy nhất nữa, đặc biệt nếu ứng dụng đó đến từ Cửa hàng Play dưới dạng Android App Bundle. Khi giải nén, bạn có thể nhận được một hoặc nhiều tệp và việc biết được sự khác biệt sẽ giúp bạn quyết định nên giữ những gì:
- Một APK cơ sở duy nhất. Các ứng dụng cũ hơn hoặc nhỏ hơn đã được tải lên Play dưới dạng APK thuần túy vẫn được cài đặt dưới dạng một tệp duy nhất. Quá trình trích xuất trả về một .apk độc lập.
- Các ứng dụng APK cơ bản + một số phần chia cấu hình. được xuất bản dưới dạng AAB được cài đặt dưới dạng nhiều APK cạnh nhau: base.apk cộng với split_config.<abi>.apk (mã gốc cho CPU của bạn), split_config.<density>.apk (tài nguyên cho màn hình của bạn) và split_config.<language>.apk (chuỗi cho ngôn ngữ của bạn). Khai thác trả về tất cả chúng. Để cài đặt lại cùng một ứng dụng trên cùng một thiết bị, bạn cần có tất cả các ứng dụng đó.
- Đôi khi, dữ liệu gói tài sản. Các trò chơi hiện đại sử dụng Play Asset Delivery lưu trữ nội dung trò chơi lớn trong bộ nhớ đệm riêng tư của ứng dụng bên ngoài APK. Chúng thường không thể xuất được bằng trình trích xuất thông thường; các gói tài sản được thiết kế để có thể tải lại vào lần khởi chạy đầu tiên.
Nếu mục tiêu của bạn là một bản sao lưu di động sẽ cài đặt trên một thiết bị khác, bạn thường muốn (a) một "APK phổ quát" hợp nhất được tạo bằng Hợp nhất APKS thành APK của chúng tôi hoặc (b) tất cả các phần tách được lưu trữ cùng nhau để trình cài đặt APK chia nhỏ như SAI có thể khôi phục chúng dưới dạng một đơn vị.
Cách thức hoạt động của quá trình trích xuất (Không cần root, hậu trường)
Hầu hết các ứng dụng "giải nén APK" không thực sự cần root vì Android hiển thị các tệp gói đã cài đặt thông qua đường dẫn đọc cấp hệ thống. Dòng chảy tiêu chuẩn là:
- Ứng dụng giải nén gọi PackageManager.getPackageInfo(package, ...) để lấy danh sách các ứng dụng đã cài đặt.
- Đối với ứng dụng đã chọn, nó sẽ đọc ApplicationInfo.sourceDir (đường dẫn của APK cơ sở, thường là /data/app/<package>-<hash>/base.apk và splitSourceDirs (đường dẫn của bất kỳ phần tách cấu hình nào)).
- Trình giải nén do người dùng cài đặt không thể đọc trực tiếp các đường dẫn này nhưng cơ chế FileProvider trong Android cho phép các thành phần hệ thống cấp quyền truy cập đọc tạm thời vào các URI cụ thể. OS làm cho phép mọi ứng dụng mở APK sở hữu của nó và APK của các ứng dụng khác bằng URI; đây là cố ý vì đường dẫn cài đặt luôn có nghĩa là mọi người đều có thể đọc được đối với các tác vụ như gỡ cài đặt và cập nhật.
- Trình trích xuất sao chép các byte vào thư mục người dùng có thể ghi (Tải xuống, thư mục bộ đệm trong ứng dụng hoặc bộ nhớ ngoài) và trình bày chúng dưới dạng tệp để chia sẻ hoặc cài đặt.
Các phương thức chỉ root (su; cp /data/app/..). bỏ qua API và đọc trực tiếp các đường dẫn thô. Chúng không nhanh hơn và không cần thiết đối với các ứng dụng không thuộc hệ thống.
Giải nén qua ADB (Được khuyến nghị để sao lưu)
Quy trình làm việc không phải ứng dụng rõ ràng nhất là ADB, quy trình mà hầu hết các nhà phát triển đã thiết lập. Hai lệnh thực hiện toàn bộ công việc:
# 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 ./
Đối với các ứng dụng APK phân tách, hãy lặp lại adb pull cho từng đường dẫn. Để có được một tệp có thể cài đặt duy nhất, hãy thả tất cả chúng vào Hợp nhất APKS thành APK của chúng tôi.
Những gì không thể được trích xuất
Giải nén trả về các tập tin cài đặt của ứng dụng. Nó trả về không:
- Dữ liệu ứng dụng: tùy chọn, cơ sở dữ liệu, lưu tệp. Những người này sống dưới /data/data/<package>/ và được bảo vệ khỏi việc trích xuất không phải root bằng hộp cát dữ liệu người dùng.
- Gói tài sản Play Asset Delivery: được tải xuống trong lần chạy đầu tiên, được lưu vào bộ nhớ đệm riêng tư và dự kiến sẽ được tải lại nếu thiếu.
- Tiến trình được lưu trên đám mây: nếu ứng dụng sử dụng Google Play Games, Firebase hoặc tương tự, phần được lưu trữ trên đám mây sẽ nằm trên máy chủ của nhà xuất bản chứ không phải trên thiết bị của bạn.
Do đó, việc trích xuất phù hợp với các trường hợp sử dụng "Tôi muốn giữ lại một bản sao của trình cài đặt", nhưng không thể thay thế cho các bản sao lưu toàn bộ thiết bị thích hợp (yêu cầu công cụ gốc hoặc công cụ của nhà cung cấp).
Phân tích APK đã trích xuất của bạn
Sau khi bạn sao lưu ứng dụng của mình, hãy sử dụng bộ phần mềm trực tuyến của chúng tôi để kiểm tra siêu dữ liệu, biểu tượng và quyền của chúng.
Bắt đầu phân tích APKCâu hỏi thường gặp (FAQ)
Việc giải nén một ứng dụng có bao gồm dữ liệu đăng nhập của tôi không?
Không. Việc trích xuất chỉ sao chép mã ứng dụng và tài nguyên. Nó không bao gồm dữ liệu tài khoản cá nhân, mật khẩu hoặc cài đặt của bạn vì lý do bảo mật.
Tôi có thể trích xuất các ứng dụng hệ thống như YouTube không?
Đúng. Tuy nhiên, một số ứng dụng hệ thống có thể phụ thuộc sâu sắc vào các phiên bản hệ điều hành cụ thể và có thể không cài đặt đúng cách trên các thiết bị khác.
APK được trích xuất sẽ đi đâu?
Hầu hết các ứng dụng giải nén đều lưu tệp vào thư mục có tên APK đã trích xuất hoặc Tải xuống trong bộ nhớ trong của điện thoại.
Sao lưu các ứng dụng đã cài đặt mà không làm mất cấu hình phân chia
Xây dựng kho ứng dụng cục bộ của riêng bạn là cách chắc chắn nhất để không bao giờ mất quyền truy cập vào các công cụ bạn yêu thích. Cả ứng dụng thân thiện với thao tác nhấn và thiết bị đầu cuối ADB đều đưa bạn đến đó và giải nén tập tin APK là cách an toàn, thiết thực để quản lý thiết bị Android của bạn. Sau khi sao lưu thư viện của mình, hãy dành chút thời gian xem xác minh chữ ký của các bản sao lưu đó để bạn biết rằng chúng không bị giả mạo theo thời gian.