Có cách nào để bỏ qua INSTALL_FAILED_VERSION_DOWNGRADE khi cài đặt ứng dụng với Android Debug Bridge không?


121

Có vẻ như Android 4.2 gần đây nhất đã xuất hiện tình trạng lỗi này khi cài đặt khi một người cố gắng cài đặt APK có phiên bản thấp hơn. Trong các phiên bản trước của Android, người ta có thể cài đặt APK cũ hơn một cách đơn giản thông qua adb install -r <link to APK>. Đối với mục đích gỡ lỗi, tôi thường xuyên cần kiểm tra lại các APK cũ hơn; và -rcờ sẽ thay thế bản dựng cũ hơn trong các phiên bản Android cũ hơn. Có một công việc xung quanh đây để bỏ qua [INSTALL_FAILED_VERSION_DOWNGRADE]?


Ý bạn là, ngoài việc gỡ cài đặt phiên bản mới hơn?
CommonsWare

Chính xác; Tôi giả định rằng -rlá cờ sẽ xử lý điều này.
AaronMT

5
Câu hỏi này cũng hợp lệ cho các trường hợp bạn có (hơi không chính xác) các bản dựng bị đánh số sai. Ví dụ: có thể v1.0 của bạn từ hộp phát triển có Mã phiên bản cao hơn v2.0 từ máy chủ xây dựng.
parkerfath

Câu trả lời:


288

Có vẻ như phiên bản mới nhất của công cụ adb có "cờ cho phép hạ cấp" không được hiển thị trong trợ giúp của adb, nhưng nó được hiển thị trong trợ giúp "chiều" trên thiết bị. Vì vậy, hãy sử dụng: adb install -r -d <link to apk>


3
Đã thử adb install -rd <apkfile>mà không hiệu quả. Phiên bản của bạn (với các tùy chọn được tách biệt) hoạt động tốt. Cảm ơn!
MarSoft

1
Và nó dường như được ghi lại bây giờ! Chỉ cần không phải là bạn phải sử dụng -r -d, -rd sẽ không làm việc
plaisthos

Ví dụ: để gỡ cài đặt (hạ cấp) Waze 4.0.0.2 và cài đặt phiên bản 3.9.5.3: adb install -r -d Waze_3.9.5.3.apk . Bằng cách này, bạn sẽ không mất dữ liệu ứng dụng.
Derek Gogol

12
Kể từ Android 7 (Nougat), adb install -d không còn hoạt động trừ khi gói được đánh dấu là có thể gỡ lỗi. android.googlesource.com/platform/frameworks/base/+/921dd75
Darpan

20

Bạn có thể thử và sử dụng adb uninstall -k <package>, sau đó cài đặt apk cũ hơn. Từ hướng dẫn sử dụng adb:

  adb uninstall [-k] <package> - remove this app package from the device
                                 ('-k' means keep the data and cache directories)

Tôi đã tự mình thử nó với apk của mình và nó có vẻ hoạt động với hầu hết dữ liệu (một số dữ liệu như RawContacts không được lưu)


Có vẻ như lệnh này không thực sự thực hiện gỡ cài đặt, thay vào đó chỉ đưa ra một cảnh báo. Lệnh để thực sự xuất hiện điều này dường như là adb shell pm uninstall -k <package>.
Paul Lammertsma

Điều này cũng hữu ích cho việc hạ cấp, nếu adb -d vẫn phàn nàn như đã làm với tôi.
Pointer Null

14

Bạn đã bật Nhiều tài khoản trên thiết bị của mình (và đẩy apk của bạn qua ADB) chưa? Nếu vậy, bạn phải xóa apk trong mọi tài khoản. Sau khi gỡ cài đặt hoàn tất, quá trình đẩy của bạn sẽ ổn.


Khôi phục bản sao lưu qua Titanium Backup không hoạt động. Cài đặt mới không hoạt động. Cài đặt qua APK và / hoặc cài đặt adb không hoạt động. Điều này tiêu tốn của tôi 1,5 giờ và mẹo đơn giản của bạn đã làm được thủ thuật. Cảm ơn!
bentolor

3

Trong trường hợp của tôi, đó là phiên bản cũ của Dịch vụ Google Play được bao gồm trong dự án của tôi. Tôi đang sử dụng Android Studio. Tôi đã chạy bản cập nhật trên SDK và nhập thư viện đã cập nhật và lỗi đó đã biến mất. Vì vậy, đề xuất của tôi: cập nhật lên các thư viện mới nhất được tham chiếu bởi dự án của bạn.


1

Thử gỡ cài đặt phiên bản ứng dụng đã cài đặt trước đó bằng-

adb uninstall com.package.name

và sau đó cài đặt / chạy lại ứng dụng của bạn


0

Bạn có thể đã cài đặt từ một bản sao mã riêng biệt có số phiên bản cao hơn bản sao bạn đang làm việc ngay bây giờ. Trong cả hai trường hợp, hãy gỡ cài đặt bản sao hiện được cài đặt hoặc mở Cài đặt> Ứng dụng để xác định số phiên bản cho ứng dụng đã cài đặt và tăng Mã phiên bản của bạn lên cao hơn trong AndroidManifest.


1
Tại sao điều này bị phản đối? Nó có thể không phải là câu trả lời tốt nhất, nhưng nó có vẻ là một giải pháp khả thi (và có lẽ là dễ nhất) cho những người chưa quen với điều này! Vui lòng để lại bình luận cho những câu trả lời như thế này, vì chúng rất cần thiết không chỉ cho người trả lời mà còn cho những độc giả truy cập câu hỏi này sau đó. : - |
jedd.ahyoung

Đây là điều tất nhiên có thể làm được. Đó là điều hiển nhiên rồi. Câu hỏi đặt ra là liệu có cách nào để bỏ qua bước kiểm tra này và cho phép hạ cấp hay không. Và câu trả lời là có. Câu trả lời này về cơ bản nói không.
tasomaniac

0

Tôi cũng gặp phải vấn đề tương tự. Nó có thể được giải quyết bằng các bước dưới đây, dễ dàng hơn so với việc xóa bất kỳ apk nào khỏi thiết bị -

1) Chạy lệnh "adb logcat | grep -i version" trên thiết bị đầu cuối

2) Tìm dòng cụ thể, dòng này sẽ được hiển thị ở cuối logcat -

"Downgrade detected: Update version code 5011  is older than current 9109"

3) sao chép phiên bản hiện tại (ví dụ: 9109) và dán nó vào AndroidManifest.xml như hình dưới đây -

android:versionCode="9109"

Bây giờ hãy dọn dẹp và xây dựng lại ứng dụng và nó sẽ hoạt động tốt.


0

Có thể là sự cố với các phần phụ thuộc của Dịch vụ Google Play.

Đôi khi, nó KHÔNG phải là trường hợp:

a) có một phiên bản ứng dụng hiện có được cài đặt, mới hơn hay không

b) có một phiên bản hiện có của ứng dụng được cài đặt trên một tài khoản người dùng khác trên thiết bị

Vì vậy, thông báo lỗi chỉ là không có thật.

Trong trường hợp của tôi, tôi đã có:

implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.gms:play-services-gcm:16.0.0'

Nhưng khi tôi cố gắng

implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'
implementation 'com.google.android.gms:play-services-gcm:17.0.0'

Tôi gặp các lỗi liên quan đến androidX, vì tôi chưa nâng cấp lên androidX và chưa sẵn sàng thực hiện. Tôi thấy rằng việc sử dụng phiên bản 16.xy mới nhất hoạt động và tôi không nhận được thông báo lỗi nào nữa. Hơn nữa, tôi có thể đợi cho đến khi tôi sẵn sàng, để nâng cấp lên androidX.

implementation 'com.google.android.gms:play-services-maps:16.+'
implementation 'com.google.android.gms:play-services-location:16.+'
implementation 'com.google.android.gms:play-services-gcm:16.+'

-3

Đối với những người gặp sự cố với Xiaomi:

adb shell pm uninstall <package_name>

Điều này không giúp được gì và cần được giải thích tại sao cần phải làm theo cách này.
Benyamin Limanto
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.