Trình giả lập Android: Lỗi cài đặt: INSTALL_FAILED_VERSION_DOWNGRADE


142

Tôi hiện đang cố gắng biên dịch và thử nghiệm một Ứng dụng Android nhỏ.

Tôi đang sử dụng Eclipse và đã cài đặt SDK 4.2 (Api Cấp 17). Tôi đã thiết lập

<uses-sdk android:targetSdkVersion="17" android:minSdkVersion="8" />

mặc dù tôi cũng đã thử các giá trị khác nhau (tức là 17/17).

Tôi không sử dụng bất kỳ chức năng GoogleAPI nào, tôi cũng không sử dụng các chức năng không có sẵn trong API Cấp 8. Hoặc ít nhất tôi không nhận được bất kỳ lỗi biên dịch hoặc cảnh báo nào liên quan đến vấn đề đó.

Khi tôi biên dịch dự án và chạy nó trên một thiết bị thực chạy Android 2.2.1, Ứng dụng sẽ chạy tốt. Tuy nhiên, khi tôi thử chạy ứng dụng trên trình giả lập (Thiết bị ảo Android) với Android 4.2, Api Cấp 17 tôi gặp phải lỗi sau:

[2012-12-10 21:10:29 - SoftKeyboard] Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
[2012-12-10 21:10:29 - SoftKeyboard] Please check logcat output for more details.
[2012-12-10 21:10:29 - SoftKeyboard] Launch canceled!

Logcat tuy nhiên trống rỗng. Tôi thực sự không có manh mối, lỗi này thậm chí có nghĩa là gì ...

Câu trả lời:


353

Điều đó có nghĩa là bạn đang cố gắng cài đặt một ứng dụng có cùng tên gói như một ứng dụng đã được cài đặt trên trình giả lập, nhưng ứng dụng bạn đang cố gắng cài đặt có phiên bản Mã thấp hơn (giá trị số nguyên cho số phiên bản của bạn).

Bạn có thể đã cài đặt từ một bản sao riêng của mã 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, một trong hai:

  • gỡ cài đặt bản sao hiện đang cài đặt

  • hoặc mở Cài đặt điện thoại> Trình quản lý ứng dụng để xác định số phiên bản cho ứng dụng đã cài đặt và tăng <manifest android:versionCode mức cao hơn của bạn trong AndroidManifest.

  • hoặc https://stackoverflow.com/a/13772620/632951


1
Cảm ơn! Chính xác là như vậy - tôi đã sử dụng ví dụ Softkeyboard từ một SDK cũ hơn và có vẻ như một ví dụ về Softkeyboard đã được cài đặt (theo mặc định?!) Trong các thiết bị giả lập (nhưng ở phiên bản khác, mới hơn). Sau khi đổi tên ứng dụng của tôi, mọi thứ hoạt động như mong đợi ...
ndbd

2
@Alexander: Bạn có thể cập nhật câu trả lời này để bao gồm cờ -d không?
David Alves

8
Không cần thiết để gỡ cài đặt ứng dụng. Sử dụng cờ: -r -d Những cờ này có nghĩa là cài đặt lại và hạ cấp.
petrsyn

1
@petrsyn: Tôi phải đặt những lá cờ này ở đâu?
Hươu cao cổ Violet

2
@VioletGiraffe nó được sử dụng trong dòng lệnh: adb install -r -d Application.apk
petrsyn

61

Bạn cũng có thể xem xét thêm -dcờ để cài đặt adb. Nó nên bỏ qua lỗi này.

adb install -r -d abc.apk

8
Không có giấy tờ nhưng xuất hiện để làm việc. Tôi đã phải viết nó một cách riêng biệt như -d, kết hợp nó với -r vì -rd không hoạt động.
mhsmith

3
Bây giờ nó được ghi lại : -d: allow version code downgrade. Vẫn cần phải tách ra khỏi-r
wvducky 16/2/2016

1
Từ tài liệu (2020): -d: allow version code downgrade (debuggable packages only)
Alex.K.

30

Đầu tiên gỡ cài đặt ứng dụng của bạn khỏi trình giả lập:

adb -e uninstall your.application.package.name

Sau đó thử cài đặt lại ứng dụng.


8
Hoặc đối với một thiết bị vật lý được kết nối adb -s DEVICESERIALNUMBER uninstall your.application.package.name, nơi DEVICESERIALNUMBERcó thể được tìm thấy bằng cách sử dụng adb devices -l.
Joel Purra

Có vẻ như một bước không cần thiết nếu bạn chỉ muốn gỡ lỗi một ứng dụng.
IgorGanapolsky

8

Điều này đã xảy ra trong dự án của tôi vì tôi đang sử dụng tài nguyên XML để đặt mã phiên bản.

AndroidManifest.xml:
android:versionCode="@integer/app_version_code"

app.xml:
<integer name="app_version_code">64</integer>

Đây không phải là vấn đề trong các phiên bản trước của adb, tuy nhiên, kể từ platform-toolsr16, điều này không còn được giải quyết theo số nguyên thích hợp. Bạn có thể buộc cài đặt lại bằng cách sử dụng adb -rhoặc tránh hoàn toàn sự cố bằng cách sử dụng một nghĩa đen trong tệp kê khai:

android:versionCode="64"

Đây là vấn đề đối với tôi và tôi đồng ý rằng nó không giải quyết đúng Mã phiên bản, thậm chí tăng nó (ví dụ: 65) không tránh được INSTALL_FAILED_VERSION_DOWNGRADE
Stan Kurdziel

5

Điều này có thể xảy ra khi cố gắng cài đặt APK gỡ lỗi / chưa ký trên đầu APK phát hành đã ký từ cửa hàng Play.

H:\>adb install -r "Signed.apk"
2909 KB/s (220439 bytes in 0.074s)
        pkg: /data/local/tmp/Signed.apk
Success

H:\>adb install -r "AppName.apk"
2753 KB/s (219954 bytes in 0.078s)
        pkg: /data/local/tmp/AppName.apk
Failure [INSTALL_FAILED_VERSION_DOWNGRADE]

Giải pháp cho vấn đề này là gỡ cài đặt và sau đó cài đặt lại hoặc chạy lại từ IDE.


Tôi không phải là người downvoter, nhưng tôi đoán rằng đây không phải là lý do duy nhất tại sao điều đó có thể xảy ra.
Viccari

3

INSTALL_FAILED_VERSION_DOWNGRADE

Tất cả các ứng dụng Android đều có tên gói. Tên gói xác định duy nhất ứng dụng trên thiết bị. Nếu cùng PACKAGENAME như ứng dụng đó đã được cài đặt trên thiết bị thì đây lỗi Hiển thị.

  1. Bạn có thể gỡ cài đặt ứng dụng khỏi thiết bị của mình trước rồi cài đặt ứng dụng mới.
  2. Bạn chỉ có thể tăng số lượng mỗi lần một phiên bản mới được phát hành .

1
Bạn đã đúng phiên bản Mã phải được tăng lên trên mỗi bản phát hành. Tuy nhiên, không phải tại thời điểm phát triển trước khi phát hành. Ngoài ra, bạn sẽ có thể cài đặt apk với cùng phiên bản Mã trên đầu apk đã được cài đặt (mà không cần gỡ cài đặt). Linh cảm của tôi là vấn đề là phiên bản tham chiếu tài nguyên Mã nguồn - xem: stackoverflow.com/a/14946938/431296
Stan Kurdziel

3

Trong Marshmallow, tôi đã gặp lỗi này,

Installation error: INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE
Please check logcat output for more details.
Launch canceled!

Tìm kiếm giải pháp tôi đã tìm kiếm và đến đây. Tôi đã xóa ứng dụng nhưng vẫn gặp sự cố này trong Nexus 6. Sau đó, thấy rằng trong,

Settings > Apps > [My app name] have to removed for all user. 

2

Theo mã src sdk từ ... \ android-22 \ android \ content \ pm \ PackageManager.java

/**
 * Installation return code: this is passed to the {@link IPackageInstallObserver} by
 * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
 * the new package has an older version code than the currently installed package.
 * @hide
 */
public static final int INSTALL_FAILED_VERSION_DOWNGRADE = -25;

nếu gói mới có mã phiên bản cũ hơn gói hiện được cài đặt.


không nên xảy ra với cùng một phiên bản Mã mặc dù
Stan Kurdziel

2

Tôi đã có vấn đề tương tự. Tôi đã gặp lỗi khi tôi cố chạy trong thiết bị Android không phải trình giả lập .

sudo ionic run android 

Tôi có thể khắc phục điều này bằng cách chạy

adb uninstall com.mypackage.name

2

bạn có thể thử điều này: adb install -r -d -f your_Apk_path


1

điều này đã xảy ra với tôi khi tôi nhập Ứng dụng Android Studio vào nhật thực.

Tôi đã tìm ra tệp andoridmanifest.xml cần được sửa đổi một chút khi nhập từ dự án studio android. Tôi đã tạo một dự án thử nghiệm mới và sao chép qua các tiêu đề để làm cho nó phù hợp. voila, vấn đề được giải quyết.


1

Lỗi này xuất hiện trong dự án Android của tôi với nhiều loại tệp gfx. Cuối cùng, không có thay đổi nào trong tệp kê khai được chấp nhận.

Vì tôi thiếu kiến ​​thức về các thiết bị Android nên tôi quên rằng thiết bị thử nghiệm của mình có Người dùng thứ hai. Người dùng này cũng đã cài đặt phiên bản ứng dụng của tôi nên tôi cũng phải xóa ứng dụng cho tài khoản người dùng này và nó hoạt động.


0

điều khiến tôi không ngừng nghĩ là tôi không biết rằng ứng dụng này đã được cài đặt cho tài khoản khách của mình (mặc dù tôi đã gỡ cài đặt nó cho các tài khoản khác ..)

Vì vậy, tôi đã tìm kiếm ứng dụng trong trình quản lý ứng dụng và chỉ cần nhấp vào gỡ cài đặt cho tất cả người dùng

nhập mô tả hình ảnh ở đây


0

Chỉ cần gỡ cài đặt Apk trước đó và cài đặt APK cập nhật


0

Nó có thể là một vấn đề với các phụ thuộc của Google Play Services hơn là vấn đề phiên bản ứng dụng thực tế.

Đôi khi, đó không phải là trường hợp:

a) có phiên bản hiện có của ứng dụng được cài đặt, mới hơn hoặc không b) có phiên bản hiện có của ứng dụng được cài đặt trên 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 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 để làm điều đó. Tôi thấy rằng việc sử dụng các 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ữa. Hơn nữa, tôi có thể đợi đến sau này 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.+'
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.