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ĩa | Cách sửa |
|---|---|---|
INSTALL_FAILED_ALREADY_EXISTS | Ứng dụng đã được cài | adb install -r app.apk |
INSTALL_FAILED_VERSION_DOWNGRADE | Version code thấp hơn bản đang cài | adb install -r -d app.apk, hoặc gỡ bản cũ trước |
INSTALL_FAILED_UPDATE_INCOMPATIBLE | Cù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_CERTIFICATES | APK chưa được ký | Ký APK, hoặc build bản debug/release đã ký |
INSTALL_FAILED_NO_MATCHING_ABIS | Mã native dành cho loại CPU khác | Dùng APK build cho đúng ABI của điện thoại |
INSTALL_FAILED_OLDER_SDK | Phiê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_ONLY | APK được đánh dấu testOnly | adb install -t app.apk |
INSTALL_FAILED_INSUFFICIENT_STORAGE | Không đủ dung lượng trống | Giải phóng bộ nhớ |
INSTALL_FAILED_USER_RESTRICTED | Điện thoại chặn việc cài đặt | Cho phép cài qua USB, xác nhận trên điện thoại |
INSTALL_FAILED_MISSING_SPLIT | Thiếu một phần của split APK | Cà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.apkGỡ 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.apkTrê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.abilistSau đó 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.apkTệ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.