Android Debug Bridge ile uygulama yüklemesinde INSTALL_FAILED_VERSION_DOWNGRADE'i yok saymanın herhangi bir yolu var mı?


121

Görünüşe göre, en son Android 4.2, daha düşük bir sürüme sahip bir APK yüklemeye çalışıldığında kurulumda bu hata koşulunu ortaya koydu. Android'in önceki sürümlerinde, eski APK'ları basitçe adb install -r <link to APK>. Hata ayıklama amacıyla, eski APK'leri sık sık yeniden test etmem gerekiyor; ve -rbayrak eski Android sürümlerindeki eski yapının yerini alacaktı. Burada görmezden gelinecek bir çalışma var mı [INSTALL_FAILED_VERSION_DOWNGRADE]?


Yani, yeni sürümü kaldırmanın yanı sıra?
CommonsWare

Doğru; -rBayrağın bunu halledeceğini varsaydım .
AaronMT

5
Bu soru aynı zamanda yanlış numaralandırılmış (bir şekilde yanlış) yapılara sahip olduğunuz durumlar için de geçerlidir. Örneğin, bir geliştirme kutusundaki v1.0'ınız, bir yapı sunucusundaki v2.0'dan daha yüksek bir versionCode'a sahip olabilir.
parkerfath

Yanıtlar:


288

Görünüşe göre adb araçlarının en son sürümünde, adb yardımında gösterilmeyen bir "düşürmeye izin ver bayrağı" var, ancak cihazdaki "pm" yardımında gösteriliyor. Öyleyse kullan: adb install -r -d <link to apk>


3
adb install -rd <apkfile>Hangi işe yaramadı denedi . Versino'nuz (ayrı seçeneklerle) iyi çalışıyor. Teşekkürler!
MarSoft

1
Ve şimdi belgeleniyor gibi görünüyor! -R -d,
-rd

Örneğin, Waze 4.0.0.2'yi kaldırmak (düşürmek) ve 3.9.5.3 sürümünü yüklemek için: adb install -r -d Waze_3.9.5.3.apk . Bu şekilde uygulama verilerini kaybetmezsiniz.
Derek Gogol

12
Android 7'den (Nougat) bu yana, adb install -d paket hata ayıklanabilir olarak işaretlenmedikçe artık çalışmıyor. android.googlesource.com/platform/frameworks/base/+/921dd75
Darpan

20

Deneyebilir ve kullanabilir adb uninstall -k <package>ve sonra eski apk'yi yükleyebilirsiniz . Adb kullanım kılavuzundan:

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

Bunu apk ile kendim denedim ve çoğu veri için çalışıyor gibi görünüyor (RawContacts gibi bazı veriler kaydedilmedi)


Görünüşe göre bu komut kaldırmayı gerçekten yürütmüyor, bunun yerine bir uyarı veriyor. Bunu gerçekten yürütme komutu öyle görünüyor adb shell pm uninstall -k <package>.
Paul Lammertsma

Bu, adb -d benim için yaptığı gibi hala şikayet ediyorsa, eski sürüme geçmek için de yararlıdır.
Pointer Null

14

Cihazınızda birden fazla hesabı etkinleştirdiniz mi (ve apk'nizi ADB aracılığıyla ittiniz)? Öyleyse her hesapta apk'yi kaldırmanız gerekir. Kaldırma işlemini tamamladıktan sonra, push işleminiz tamam olacaktır.


Titanium Backup ile yedeklemeyi geri yüklemek işe yaramadı. Yeni yükleme işe yaramadı. APK ve / veya adb yükleme yoluyla yükleme çalışmadı. Bu bana 1,5 saate mal oldu ve basit ipucun hile yaptı. Teşekkürler!
bentolor

3

Benim durumumda, projeme dahil olan Google Play Hizmetlerinin eski bir sürümüydü. Android Studio kullanıyorum. SDK'da bir güncelleme çalıştırdım ve güncellenmiş kitaplığı içe aktardım ve bu hata ortadan kalktı. Bu yüzden önerim: Projeniz tarafından referans verilen en son kütüphaneleri güncelleyin.


1

Aşağıdakileri kullanarak uygulamanın önceden yüklenmiş sürümünü kaldırmayı deneyin:

adb uninstall com.package.name

ve ardından uygulamanızı tekrar yükleyin / çalıştırın


0

Kodun, sürüm numarasının şu anda üzerinde çalışmakta olduğunuz kopyadan daha yüksek olduğu ayrı bir kopyasından yüklemiş olabilirsiniz. Her iki durumda da, yüklü uygulamanın sürüm numarasını belirlemek için şu anda yüklü kopyayı kaldırın veya Ayarlar> Uygulamalar'ı açın ve AndroidManifest'te versionCode'unuzu daha yüksek olacak şekilde artırın.


1
Bu neden reddedildi? En iyi cevap olmayabilir, ancak bu konuda yeni olan biri için geçerli bir çözüm (ve belki de en kolay) gibi görünüyor! Lütfen sadece cevaplayıcı için değil, bu soruyu daha sonra ziyaret eden okuyucular için de gerekli olduğundan, bunun gibi cevaplar için yorum bırakın . : - |
jedd.ahyoung

Bu elbette yapılabilecek bir şey. Zaten ortada. Soru, bu kontrolü atlamanın ve eski sürüme geçmeye izin vermenin bir yolu olup olmadığını soruyor. Cevap evet. Bu cevap temelde hayır diyor.
tasomaniac

0

Ben de aynı problemle karşılaştım, cihazdan herhangi bir apk silmekten daha kolay olan aşağıdaki adımlarla çözülebilir -

1) Terminalde "adb logcat | grep -i version" komutunu çalıştırın

2) Logcat'in sonunda gösterilecek olan belirli satırı arayın -

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

3) mevcut sürümü kopyalayın (örneğin 9109 için) ve aşağıda gösterildiği gibi AndroidManifest.xml dosyasına yapıştırın -

android:versionCode="9109"

Şimdi uygulamayı temizleyin ve yeniden oluşturun ve düzgün çalışması gerekir.


0

Google Play Hizmetleri bağımlılıkları ile ilgili bir sorun olabilir.

Bazen şu durum söz konusu DEĞİLDİR:

a) Uygulamanın yüklü, daha yeni veya daha yeni bir sürümü var

b) Cihazdaki başka bir kullanıcı hesabına yüklenmiş uygulamanın mevcut bir sürümü varsa

Yani hata mesajı sadece sahtedir.

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 yükseltmediğim ve bunu yapmaya hazır olmadığım için androidX ile ilgili hatalar aldım. En son 16.xy sürümlerini kullanmanın işe yaradığını buldum ve artık hata mesajını almıyorum. Ayrıca, androidX'e geçmek için hazır olduğum zamana kadar 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.+'

-3

Xiaomi ile sorun yaşayan kişiler için:

adb shell pm uninstall <package_name>

Bu hiçbir şeye yardımcı olmaz ve neden bu şekilde yapılması gerektiği açıklanmalıdır.
Benyamin Limanto
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.