Android Emulator: Yükleme hatası: INSTALL_FAILED_VERSION_DOWNGRADE


142

Şu anda küçük bir Android Uygulamasını derlemeye ve test etmeye çalışıyorum.

Eclipse kullanıyorum ve SDK 4.2 (Api Seviye 17) kurulu. Ayarladım

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

Ben de farklı değerler denedim rağmen (yani 17/17).

Herhangi bir GoogleAPI işlevi kullanmıyorum veya API Seviye 8'de bulunmayan işlevleri kullanmıyorum. En azından bu konuda herhangi bir derleme hatası veya uyarısı almıyorum.

Projeyi derlediğimde ve Android 2.2.1 çalıştıran gerçek bir cihazda çalıştırdığımda Uygulama iyi çalışıyor. Ancak uygulamayı Android 4.2, Api Seviye 17 ile bir emülatörde (Android Sanal Aygıt) çalıştırmaya çalıştığımda aşağıdaki hatayı alıyorum:

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

Ancak Logcat boş. Gerçekten hiçbir fikrim yok, bu hatanın ne anlama geldiği ...

Yanıtlar:


353

Bu, taklitçide zaten yüklü olan bir uygulamayla aynı paketAdı ile bir uygulama yüklemeye çalıştığınız anlamına gelir, ancak yüklemeye çalıştığınız uygulamanın daha düşük bir sürümKodu (sürüm numaranız için tamsayı değeri) vardır.

Sürüm numarasının şu anda çalıştığınız kopyadan daha yüksek olduğu ayrı bir kod kopyasından yüklemiş olabilirsiniz. Her iki durumda da:

  • şu anda yüklü olan kopyayı kaldır

  • veya yüklü uygulamanın sürüm numarasını belirlemek için telefonunuzun Ayarlar> Uygulama Yöneticisi'ni açın <manifest android:versionCode ve AndroidManifest'te daha yüksek olacak şekilde artırın .

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


1
Teşekkürler! Tam olarak buydu - Eski bir SDK'dan Softkeyboard örneğiyle suçlandım ve öykünücü cihazlarda (varsayılan olarak farklı?) Bir Softkeyboard örneği zaten yüklü gibi görünüyor (ancak farklı, daha sonraki bir sürümde). Uygulamamı yeniden adlandırdıktan sonra her şey beklendiği gibi çalıştı ...
ndbd

2
@Alexander: Bu yanıtı -d bayrağını içerecek şekilde güncelleyebilir misiniz?
David Alves

8
Uygulamanın kaldırılmasına gerek yoktur. Bayrakları kullanın: -r -d Bu bayraklar yeniden yükleme ve eski sürüme geçme anlamına gelir.
petrsyn

1
@petrsyn: Bu bayrakları Eclipse'e nereye koyabilirim?
Violet Zürafa

2
@VioletGiraffe komut satırında kullanılır: adb install -r -d Application.apk
petrsyn

61

Ayrıca -dadb kuruluşuna bayrak eklemeyi de düşünebilirsiniz . Bu hatayı görmezden gelmelidir.

adb install -r -d abc.apk

8
Belgelenmemiş ama işe yarıyor gibi görünüyor. -D olarak ayrı ayrı yazmak zorunda kaldım, -r gibi -r işe yaramadı.
mhsmith

3
Şimdi doküme: -d: allow version code downgrade. Hala ayırmak gerekir-r
wisbucky

1
Dokümanlardan (2020): -d: allow version code downgrade (debuggable packages only)
Alex.K.

30

İlk önce uygulamanızı emülatörden kaldırın:

adb -e uninstall your.application.package.name

Ardından uygulamayı tekrar yüklemeyi deneyin.


8
Veya bağlı bir fiziksel cihaz için adb -s DEVICESERIALNUMBER uninstall your.application.package.name, nerede DEVICESERIALNUMBERbulunabilir adb devices -l.
Joel Purra

Bir uygulamada hata ayıklamak istiyorsanız gereksiz bir adım gibi görünüyor.
IgorGanapolsky

8

Sürüm kodunu ayarlamak için bir XML kaynağı kullandığım için bu projemde oluyordu.

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

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

Bu, önceki sürümlerinde bir sorun değildi adb, ancak platform-toolsr16'dan itibaren bu artık doğru tam sayıya çözümlenmiyor. adb -rManifest'te kullanarak yeniden yüklemeyi zorlayabilir veya sorunu tamamen engelleyebilirsiniz:

android:versionCode="64"

Bu benim için bir sorundu ve katılıyorum, sürüm kodunu düzgün bir şekilde çözmüyor, hatta arttırmak (örneğin: 65) INSTALL_FAILED_VERSION_DOWNGRADE
Stan Kurdziel

5

Bu, Play Store'dan imzalı bir sürüm APK'sının üzerine bir hata ayıklama / imzasız APK yüklemeye çalışırken olabilir.

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]

Bunun çözümü için kaldırmak ve daha sonra yeniden yükleme ya da IDE çalıştırın re.


Ben aşağılayıcı değilim, ama bunun olabilmesinin tek nedeni bu değil.
Viccari

3

INSTALL_FAILED_VERSION_DOWNGRADE

Tüm Android uygulamalarının paket adı vardır. Paket adı, cihazdaki uygulamayı benzersiz bir şekilde tanımlar. Cihazda zaten yüklü olan uygulama ile aynı packageName varsa , bu hata Gösteriliyor.

  1. Uygulamayı önce cihazınızdan kaldırabilir ve ardından yenisini yükleyebilirsiniz.
  2. Yeni bir sürüm her yayınlandığında sayıyı birer birer artırabilirsiniz .

1
Her sürümde versionCode değerinin artırılması gerektiği doğrudur. Ancak, bir sürümden önce geliştirme zamanında değil. Ayrıca, önceden yüklenmiş bir apk'nin üzerine (kaldırmadan) aynı sürümle bir apk yükleyebilmelisiniz. Benim önsezim sorun kaynak referans sürümCode oldu - bkz: stackoverflow.com/a/14946938/431296
Stan Kurdziel

3

Marshmallow'da bu hatayı aldım,

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

Çözüm aradım ve buraya geldim. Uygulamayı sildim ama hala Nexus 6'da bu sorunu yaşıyorum. Daha sonra,

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

2

Sdk src koduna göre ... \ 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;

yeni paketin yüklü olan paketten daha eski bir sürüm kodu varsa.


Yine de aynı sürümle olmamalıKod
Stan Kurdziel

2

Aynı sorunu yaşıyordum. Emülatör değil android cihazımda çalıştırmaya çalıştığımda hata alıyordum .

sudo ionic run android 

Bunu çalıştırarak çözebilirim

adb uninstall com.mypackage.name

2

bunu deneyebilirsiniz: adb install -r -d -f your_Apk_path


1

Bu, bir Android Studio Uygulamasını tutulmaya aktardığımda başıma geldi.

Android stüdyosu projesinden içe aktarılırken andoridmanifest.xml dosyasının biraz değiştirilmesi gerektiğini anladım. Yeni bir test projesi oluşturdum ve başlıkları eşleştirmek için başlıkları kopyaladım. voila, sorun çözüldü.


1

Bu hata android projemde birden fazla gfx dosyası ile görünüyor. Sonunda bildirim dosyasında hiçbir değişiklik kabul edilmedi.

Android cihazlar hakkında bilgi eksikliğim nedeniyle test cihazımın ikinci bir Kullanıcısı olduğunu unutuyorum. Bu Kullanıcı ayrıca uygulamamın yüklü bir sürümüne sahip, bu yüzden bu kullanıcı hesabı için uygulamayı da silmem gerekiyor ve çalışıyor.


0

beni öldürmeye devam etti şey (bu diğer hesaplar için kaldırmış olmama rağmen) bu uygulamanın benim misafir hesabı için yüklü olduğunu bilmiyordum oldu.

bu yüzden uygulama yöneticisinde uygulamayı aradım ve tüm kullanıcılar için kaldırmayı tıkladım

resim açıklamasını buraya girin


0

Sadece önceki Apk'ı kaldırın ve güncellenmiş APK'yı yükleyin


0

Gerçek bir uygulama sürümü sorunu yerine Google Play Hizmetleri bağımlılıklarıyla ilgili bir sorun olabilir.

Bazen, durum böyle DEĞİLDİR:

a) Uygulamanın mevcut bir sürümü yüklü, daha yeni veya yüklü değil b) uygulamanın cihazdaki başka bir kullanıcı hesabında yüklü mevcut bir sürümü varsa

Yani hata mesajı sadece sahte.

Benim durumumda:

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'

Ama denediğimde

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'

Henüz androidX'e geçmemiştim ve bunu yapmaya hazır olmadığım için androidX ile ilgili hatalar aldım. En son 16.xy sürümlerini kullanarak işe yaradığını buldum ve artık hata iletisini alamadım. Ayrıca, androidX'e yükseltmek için hazır olduğumda daha sonra bekleyebilirim.

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.+'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.