Sửa lỗiĐăng ngày: 3 phút đọc

Lỗi adb install: giải thích các mã INSTALL_FAILED và cách sửa

Ý nghĩa và cách sửa từng lỗi cài APK bằng adb install, từ INSTALL_FAILED_VERSION_DOWNGRADE, UPDATE_INCOMPATIBLE đến NO_MATCHING_ABIS, USER_RESTRICTED và split APK.

adb install app.apk sẽ in ra Success hoặc Failure [CODE: message]. Mã lỗi cho biết chính xác chuyện gì đã xảy ra. Dưới đây là những mã bạn hay gặp nhất, ý nghĩa của chúng và cách sửa từng lỗi.

Bảng tra nhanh

Mã lỗiÝ nghĩaCách sửa
INSTALL_FAILED_ALREADY_EXISTSỨng dụng đã được càiadb install -r app.apk
INSTALL_FAILED_VERSION_DOWNGRADEVersion code thấp hơn bản đang càiadb install -r -d app.apk, hoặc gỡ bản cũ trước
INSTALL_FAILED_UPDATE_INCOMPATIBLECùng tên gói nhưng khác khóa kýGỡ ứng dụng đang cài trước
INSTALL_PARSE_FAILED_NO_CERTIFICATESAPK chưa được kýKý APK, hoặc build bản debug/release đã ký
INSTALL_FAILED_NO_MATCHING_ABISMã native dành cho loại CPU khácDùng APK build cho đúng ABI của điện thoại
INSTALL_FAILED_OLDER_SDKPhiên bản Android trên điện thoại quá cũDùng bản build có minSdkVersion thấp hơn
INSTALL_FAILED_TEST_ONLYAPK được đánh dấu testOnlyadb install -t app.apk
INSTALL_FAILED_INSUFFICIENT_STORAGEKhông đủ dung lượng trốngGiải phóng bộ nhớ
INSTALL_FAILED_USER_RESTRICTEDĐiện thoại chặn việc cài đặtCho phép cài qua USB, xác nhận trên điện thoại
INSTALL_FAILED_MISSING_SPLITThiếu một phần của split APKCài tất cả các phần cùng lúc

Chi tiết các lỗi thường gặp

UPDATE_INCOMPATIBLE: chữ ký không khớp

Một ứng dụng cùng tên gói đã được cài nhưng được ký bằng khóa khác, ví dụ bản từ Play Store của chính ứng dụng bạn đang kiểm thử. Android sẽ không thay thế nó để bảo vệ dữ liệu của ứng dụng:

adb uninstall com.example.app
adb install app.apk

Gỡ cài đặt sẽ xóa dữ liệu của ứng dụng đó trên điện thoại.

VERSION_DOWNGRADE

Bạn đang cài một bản cũ đè lên bản mới hơn. Cho phép việc này bằng -d:

adb install -r -d app.apk

Trên các phiên bản Android gần đây, cách này chỉ dùng được với bản build debuggable. Nếu không, hãy gỡ bản cũ trước.

NO_MATCHING_ABIS

APK chứa thư viện native cho loại vi xử lý mà điện thoại không dùng, ví dụ bản build chỉ có x86_64 trên điện thoại ARM, hoặc bản chỉ có arm64-v8a trên điện thoại hay TV chạy Android 32-bit. Kiểm tra điện thoại hỗ trợ những gì:

adb shell getprop ro.product.cpu.abilist

Sau đó build hoặc tải bản phù hợp, hoặc một APK universal.

USER_RESTRICTED

Điện thoại đã từ chối cài đặt. Trên Xiaomi, Redmi và POCO, bật Install via USB (Cài đặt qua USB) trong Tùy chọn nhà phát triển và chạm Cài đặt ở hộp thoại xác nhận hiện trên điện thoại. Chi tiết trong bài gỡ lỗi USB và cài đặt bảo mật trên Xiaomi. Hồ sơ công việc và tính năng kiểm soát của phụ huynh cũng có thể chặn việc cài đặt.

Split APK và app bundle

Ứng dụng từ Android App Bundle đến dưới dạng nhiều tệp APK (một bản base và các bản split). Cài tất cả trong một lần:

adb install-multiple base.apk split_config.arm64_v8a.apk split_config.en.apk

Tệp .aab không cài trực tiếp được. Hãy dùng bundletool để tạo APK từ nó trước.

Play Protect chặn cài đặt

Đôi khi quá trình cài dừng lại vì Google Play Protect cảnh báo về ứng dụng không rõ nguồn gốc. Hãy nhìn màn hình điện thoại và chỉ chọn vẫn cài nếu bạn tin tưởng APK đó.

Cài APK từ trình duyệt

Bảng Install APK của ADBKit chạy đúng thao tác cài đặt đó trên điện thoại và hiển thị chính xác kết quả, kể cả mã lỗi được diễn giải dễ hiểu. Đánh dấu Replace existing app để cập nhật ứng dụng đã cài, tương đương với -r. Tính năng này chạy qua USB hoặc qua Wi-Fi với ADBKit agent, và APK đi thẳng từ máy tính của bạn sang điện thoại.

Xem thêm về cài đặt trong bài cách cài APK bằng ADB.