Android Emulator: Kesalahan pemasangan: INSTALL_FAILED_VERSION_DOWNGRADE

142

Saat ini saya sedang mencoba untuk mengkompilasi dan menguji Aplikasi Android kecil.

Saya menggunakan Eclipse, dan SDK 4.2 (Api Level 17) diinstal. Saya sudah siap

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

walaupun saya sudah mencoba juga nilai yang berbeda (yaitu 17/17).

Saya tidak menggunakan fungsi GoogleAPI apa pun, saya juga tidak menggunakan fungsi yang tidak tersedia di API Level 8. Atau setidaknya saya tidak mendapatkan kesalahan kompilasi atau peringatan dalam hal itu.

Ketika saya mengkompilasi proyek dan menjalankannya di perangkat nyata yang menjalankan Android 2.2.1 Aplikasi berjalan dengan baik. Namun ketika saya mencoba menjalankan aplikasi pada emulator (Android Virtual Device) dengan Android 4.2, Api Level 17 saya mendapatkan kesalahan berikut:

[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!

Namun Logcat kosong. Saya benar-benar tidak tahu, apa artinya kesalahan ini ...

ndbd
sumber

Jawaban:

353

Ini berarti Anda mencoba untuk menginstal aplikasi dengan packageName yang sama dengan aplikasi yang sudah diinstal pada emulator, tetapi yang Anda coba instal memiliki kode versi yang lebih rendah (nilai integer untuk nomor versi Anda).

Anda mungkin telah menginstal dari salinan kode yang terpisah di mana nomor versi lebih tinggi daripada salinan yang Anda gunakan saat ini. Dalam kedua kasus, baik:

  • hapus instalan salinan yang diinstal saat ini

  • atau buka Pengaturan ponsel Anda> Manajer Aplikasi untuk menentukan nomor versi untuk aplikasi yang diinstal, dan tambahkan Anda <manifest android:versionCode untuk menjadi lebih tinggi di AndroidManifest.

  • atau https://stackoverflow.com/a/13772620/632951

Alexander Lucas
sumber
1
Terima kasih! Persis seperti itu - saya exprimented dengan contoh Softkeyboard dari SDK yang lebih tua, dan sepertinya contoh Softkeyboard sudah diinstal (secara default ?!) di perangkat emulator (tetapi dalam versi yang berbeda, nanti). Setelah mengganti nama aplikasi saya semuanya berfungsi seperti yang diharapkan ...
ndbd
2
@Alexander: Bisakah Anda memperbarui jawaban ini untuk menyertakan flag -d?
David Alves
8
Tidak perlu menghapus aplikasi. Gunakan flag: -r -d Flag ini berarti instal ulang dan downgrade.
petrsyn
1
@petrsyn: di mana saya meletakkan bendera ini di Eclipse?
Violet Giraffe
2
@VioletGiraffe digunakan dalam baris perintah: adb install -r -d Application.apk
petrsyn
61

Anda juga dapat mempertimbangkan untuk menambahkan -dflag ke adb install. Seharusnya mengabaikan kesalahan ini.

adb install -r -d abc.apk
gruszczy
sumber
8
Tidak berdokumen tetapi tampaknya berfungsi. Saya harus menulisnya secara terpisah sebagai -d, menggabungkannya dengan -r karena -rd tidak berfungsi.
mhsmith
3
Ini didokumentasikan sekarang: -d: allow version code downgrade. Masih harus berpisah dari-r
wisbucky
1
Dari docs (2020): -d: allow version code downgrade (debuggable packages only)
Alex.K.
30

Copot dulu aplikasi Anda dari emulator:

adb -e uninstall your.application.package.name

Kemudian cobalah untuk menginstal aplikasi lagi.

pengguna1719362
sumber
8
Atau untuk perangkat fisik yang terhubung adb -s DEVICESERIALNUMBER uninstall your.application.package.name,, di mana DEVICESERIALNUMBERdapat ditemukan menggunakan adb devices -l.
Joel Purra
Sepertinya langkah yang tidak perlu jika Anda hanya ingin men-debug aplikasi.
IgorGanapolsky
8

Ini terjadi di proyek saya karena saya menggunakan sumber daya XML untuk mengatur kode versi.

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

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

Ini bukan masalah di versi sebelumnya adb, namun, pada platform-toolsr16 ini tidak lagi diselesaikan ke integer yang tepat. Anda dapat memaksa menginstal ulang menggunakan adb -ratau menghindari masalah sepenuhnya dengan menggunakan literal di manifes:

android:versionCode="64"
James Wald
sumber
Ini adalah masalah bagi saya, dan saya setuju itu tidak menyelesaikan kode versi dengan benar, bahkan meningkatkannya (mis: 65) tidak menghindari INSTALL_FAILED_VERSION_DOWNGRADE
Stan Kurdziel
5

Ini bisa terjadi ketika mencoba menginstal debug / undigned APK di atas APK rilis yang ditandatangani dari Play store.

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]

Solusi untuk ini adalah menghapus dan menginstal ulang atau menjalankannya kembali dari IDE.

Deanna
sumber
Saya bukan downvoter, tapi saya kira ini bukan satu-satunya alasan mengapa itu bisa terjadi.
Viccari
3

INSTALL_FAILED_VERSION_DOWNGRADE

Semua aplikasi Android memiliki nama paket. Nama paket mengidentifikasi aplikasi secara unik di perangkat. Jika packageName sama dengan aplikasi yang sudah diinstal pada perangkat maka ini menampilkan kesalahan .

  1. Anda dapat menghapus aplikasi dari perangkat Anda terlebih dahulu dan kemudian menginstal yang baru.
  2. Anda bisa menambah jumlahnya satu per satu setiap kali versi baru dirilis .
IntelliJ Amiya
sumber
1
Anda benar, kode versi harus ditingkatkan pada setiap rilis. Namun, tidak pada saat pengembangan sebelum rilis. Anda juga harus dapat menginstal apk dengan kode versi yang sama di atas apk yang sudah diinstal (tanpa menghapus instalan). Firasat saya adalah masalahnya adalah resource direferensikan versionCode - lihat: stackoverflow.com/a/14946938/431296
Stan Kurdziel
3

Di Marshmallow, saya mendapat kesalahan ini,

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

Mencari solusi, saya mencari dan datang ke sini. Saya menghapus aplikasi tetapi masih memiliki masalah ini di Nexus 6. Kemudian menemukan bahwa dalam,

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

Menurut kode sdk src dari ... \ 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;

jika paket baru memiliki kode versi yang lebih lama dari paket yang saat ini diinstal.

zhijuexu
sumber
seharusnya tidak terjadi dengan kode versi yang sama
Stan Kurdziel
2

Saya mengalami masalah yang sama. Saya mendapatkan kesalahan saat mencoba menjalankan perangkat Android saya, bukan emulator .

sudo ionic run android 

Saya dapat memperbaiki ini dengan menjalankan

adb uninstall com.mypackage.name
Anjum ....
sumber
2

Anda dapat mencoba ini: adb install -r -d -f your_Apk_path

baiiu
sumber
1

ini terjadi pada saya ketika saya mengimpor Aplikasi Android Studio ke gerhana.

Saya menemukan file andoridmanifest.xml perlu sedikit dimodifikasi saat mengimpor dari proyek android studio. Saya membuat proyek pengujian baru, dan menyalin judul untuk membuatnya cocok. voila, masalah terpecahkan.

BrayNShock
sumber
1

Kesalahan ini muncul di proyek android saya dengan beberapa jenis file gfx. Pada akhirnya tidak ada perubahan pada file manifes yang diterima.

Karena kurangnya pengetahuan saya tentang perangkat android saya lupa bahwa perangkat pengujian saya memiliki Pengguna kedua. Pengguna ini juga memiliki versi terinstal aplikasi saya jadi saya juga harus menghapus aplikasi untuk akun pengguna ini dan berfungsi.

norca
sumber
0

hal yang terus membunuh saya adalah saya tidak tahu bahwa aplikasi ini diinstal untuk akun tamu saya (walaupun saya telah mencopotnya untuk akun lain ..)

jadi saya mencari aplikasi di manajer aplikasi, dan cukup klik uninstall untuk semua pengguna

masukkan deskripsi gambar di sini

abbood
sumber
0

Hapus instalan Apk sebelumnya dan instal APK yang diperbarui

Peter
sumber
0

Ini mungkin masalah dengan dependensi Layanan Google Play daripada masalah versi aplikasi yang sebenarnya.

Kadang-kadang, BUKAN bahwa:

a) ada versi aplikasi yang ada yang diinstal, lebih baru atau tidak b) ada versi aplikasi yang ada yang diinstal pada akun pengguna lain di perangkat

Jadi pesan kesalahannya hanya palsu.

Dalam kasus saya, saya memiliki:

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'

Tetapi ketika saya mencoba

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'

Saya mendapat kesalahan terkait AndroidX, karena saya belum meningkatkan ke AndroidX dan belum siap untuk melakukannya. Saya menemukan bahwa menggunakan versi 16xy terbaru berfungsi dan saya tidak mendapatkan pesan kesalahan lagi. Selanjutnya, saya bisa menunggu sampai nanti ketika saya siap, untuk meng-upgrade ke 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.+'
auspicious99
sumber