Apakah ada cara untuk mengabaikan INSTALL_FAILED_VERSION_DOWNGRADE pada pemasangan aplikasi dengan Android Debug Bridge?

121

Sepertinya Android 4.2 terbaru telah memperkenalkan kondisi kesalahan ini saat penginstalan ketika seseorang mencoba menginstal APK dengan versi yang lebih rendah. Di versi Android sebelumnya, seseorang dapat menginstal APK yang lebih lama hanya melalui adb install -r <link to APK>. Untuk keperluan debugging, saya sering kali perlu menguji ulang APK lama; dan -rbendera tersebut akan menggantikan versi lama di versi Android yang lebih lama. Apakah ada solusi untuk mengabaikan [INSTALL_FAILED_VERSION_DOWNGRADE]?

AaronMT
sumber
Maksud Anda, selain mencopot versi yang lebih baru?
CommonsWare
Benar; Saya berasumsi bahwa -rbendera akan menangani ini.
AaronMT
5
Pertanyaan ini juga berlaku untuk kasus di mana Anda memiliki (agak salah) nomor build yang salah. Misalnya, mungkin v1.0 Anda dari kotak dev memiliki versionCode yang lebih tinggi daripada v2.0 dari server build.
parkerfath

Jawaban:

288

Tampaknya versi terbaru alat adb memiliki "izinkan tanda penurunan versi" yang tidak ditampilkan di bantuan adb, tetapi ini ditampilkan dalam bantuan "pm" di perangkat. Jadi gunakan: adb install -r -d <link to apk>

supereee
sumber
3
Mencoba adb install -rd <apkfile>yang tidak berhasil. Versino Anda (dengan opsi terpisah) berfungsi dengan baik. Terima kasih!
MarSoft
1
Dan tampaknya itu didokumentasikan sekarang! Hanya saja Anda tidak harus menggunakan -r -d, -rd tidak akan berfungsi
plaisthos
Misalnya, untuk meng-uninstal (downgrade) Waze 4.0.0.2 dan menginstal versi 3.9.5.3: adb install -r -d Waze_3.9.5.3.apk . Dengan cara ini Anda tidak akan kehilangan data aplikasi.
Derek Gogol
12
Sejak Android 7 (Nougat), adb install -d tidak lagi berfungsi kecuali paket tersebut ditandai sebagai dapat di-debug. android.googlesource.com/platform/frameworks/base/+/921dd75
Darpan
20

Anda dapat mencoba dan menggunakan adb uninstall -k <package>dan kemudian menginstal apk yang lebih lama. Dari panduan penggunaan adb:

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

Saya sudah mencobanya sendiri dengan apk saya, dan tampaknya berfungsi untuk sebagian besar data (beberapa data seperti RawContacts tidak disimpan)

Talihawk
sumber
Tampaknya perintah ini tidak benar-benar menjalankan penghapusan instalan, melainkan hanya menghasilkan peringatan. Perintah untuk benar-benar mengeksekusi ini tampaknya adb shell pm uninstall -k <package>.
Paul Lammertsma
Ini juga berguna untuk downgrade, jika adb -d masih mengeluh seperti yang saya alami.
Pointer Null
14

Apakah Anda mengaktifkan Banyak akun di perangkat Anda (dan mendorong apk Anda melalui ADB)? Jika demikian, Anda harus menghapus apk di setiap akun. Setelah uninstall selesai, push Anda akan baik-baik saja.

OlivierTurpin
sumber
Mengembalikan cadangan melalui Titanium Backup tidak berfungsi. Penginstalan baru tidak berfungsi. Penginstalan melalui APK dan / atau adb install tidak berhasil. Ini biayanya 1,5 jam dan tip sederhana Anda berhasil. Terima kasih!
bentolor
3

Dalam kasus saya, ini adalah versi lama Layanan Google Play yang disertakan dengan proyek saya. Saya menggunakan Android Studio. Saya menjalankan pembaruan pada SDK, dan mengimpor perpustakaan yang diperbarui, dan kesalahan itu hilang. Jadi saran saya: perbarui ke perpustakaan terbaru yang direferensikan oleh proyek Anda.

IgorGanapolsky
sumber
1

Coba copot pemasangan aplikasi versi sebelumnya menggunakan-

adb uninstall com.package.name

lalu instal / jalankan aplikasi Anda lagi

Krishna
sumber
0

Anda mungkin telah menginstal dari salinan kode terpisah di mana nomor versinya lebih tinggi dari salinan yang Anda kerjakan sekarang. Dalam kedua kasus tersebut, copot pemasangan salinan yang saat ini terpasang, atau buka Pengaturan> Aplikasi untuk menentukan nomor versi untuk aplikasi yang terpasang, dan naikkan versionCode Anda menjadi lebih tinggi di AndroidManifest.

Ravindra
sumber
1
Mengapa ini mendapat suara negatif? Ini mungkin bukan jawaban terbaik, tetapi sepertinya solusi yang layak (dan mungkin yang termudah) untuk seseorang yang baru dalam hal ini! Silakan tinggalkan komentar untuk jawaban seperti ini, karena itu penting tidak hanya untuk penjawab, tetapi untuk pembaca yang mengunjungi pertanyaan ini nanti. : - |
jedd.ahyoung
Ini tentu saja sesuatu yang bisa dilakukan. Sudah jelas. Pertanyaannya menanyakan apakah ada cara untuk melewati pemeriksaan ini dan mengizinkan penurunan versi. Dan jawabannya ya. Jawaban ini pada dasarnya mengatakan tidak.
tasomaniac
0

Saya juga menghadapi masalah yang sama, yang dapat diselesaikan dengan langkah-langkah di bawah ini yang lebih mudah daripada menghapus apk apa pun dari perangkat -

1) Jalankan perintah "adb logcat | grep -i version" di terminal

2) Cari baris tertentu, yang akan ditampilkan di akhir logcat -

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

3) salin versi saat ini (misalnya 9109) dan tempel di AndroidManifest.xml seperti yang ditunjukkan di bawah ini -

android:versionCode="9109"

Sekarang bersihkan dan bangun kembali aplikasi dan seharusnya berfungsi dengan baik.

Sunita
sumber
0

Mungkin ada masalah dengan ketergantungan Layanan Google Play.

Terkadang, BUKAN kasusnya:

a) ada versi aplikasi yang sudah terpasang, lebih baru atau tidak

b) ada versi aplikasi yang sudah terpasang di 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 error terkait androidX, karena saya belum mengupgrade ke androidX dan belum siap melakukannya. Saya menemukan bahwa menggunakan versi 16.xy terbaru berfungsi dan saya tidak mendapatkan pesan kesalahan lagi. Selanjutnya, saya bisa menunggu sampai nanti ketika saya siap, untuk meningkatkan 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.+'
menguntungkan99
sumber
-3

Untuk orang yang menghadapi masalah dengan Xiaomi:

adb shell pm uninstall <package_name>
Vaigunth
sumber
Ini tidak membantu apa pun dan harus dijelaskan mengapa hal itu perlu dilakukan dengan cara ini.
Benyamin Limanto