Android Emulator: ข้อผิดพลาดในการติดตั้ง: INSTALL_FAILED_VERSION_DOWNGRADE


142

ฉันกำลังพยายามรวบรวมและทดสอบแอปพลิเคชัน Android ขนาดเล็ก

ฉันใช้ Eclipse และติดตั้ง SDK 4.2 (Api ระดับ 17) แล้ว ฉันได้ตั้งค่า

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

แม้ว่าฉันจะลองด้วยค่าที่แตกต่างกัน (เช่น 17/17)

ฉันไม่ได้ใช้ฟังก์ชั่นของ GoogleAPI และฉันจะไม่ใช้ฟังก์ชั่นที่ไม่มีใน API ระดับ 8 หรืออย่างน้อยฉันก็จะไม่ได้รับข้อผิดพลาดในการรวบรวมหรือคำเตือนในเรื่องนั้น

เมื่อฉันรวบรวมโครงการและเรียกใช้บนอุปกรณ์จริงที่ใช้ Android 2.2.1 แอปพลิเคชันจะทำงานได้ดี อย่างไรก็ตามเมื่อฉันพยายามเรียกใช้แอพพลิเคชั่นบนอีมูเลเตอร์ (Android Virtual Device) ที่มี Android 4.2, Api ระดับ 17 ฉันได้รับข้อผิดพลาดดังต่อไปนี้:

[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 อย่างไรก็ตามว่างเปล่า ฉันไม่มีเงื่อนงำจริงๆความผิดพลาดนี้มีความหมายว่าอย่างไร ...

คำตอบ:


353

หมายความว่าคุณกำลังพยายามติดตั้งแอปที่มีชื่อแพคเกจเดียวกับแอพที่ติดตั้งไว้บนอีมูเลเตอร์แล้ว แต่สิ่งที่คุณกำลังพยายามติดตั้งนั้นมี versionCode ที่ต่ำกว่า (ค่าจำนวนเต็มสำหรับหมายเลขเวอร์ชั่นของคุณ)

คุณอาจติดตั้งจากสำเนาของรหัสแยกต่างหากซึ่งหมายเลขรุ่นนั้นสูงกว่าสำเนาที่คุณใช้งานอยู่ในตอนนี้ ในกรณีใดกรณีหนึ่ง:

  • ถอนการติดตั้งสำเนาที่ติดตั้งในปัจจุบัน

  • หรือเปิดการตั้งค่า> ตัวจัดการแอปพลิเคชันของโทรศัพท์เพื่อตรวจสอบหมายเลขเวอร์ชันสำหรับแอพที่ติดตั้งและเพิ่มระดับของคุณ<manifest android:versionCode ให้สูงขึ้นใน AndroidManifest

  • หรือhttps://stackoverflow.com/a/13772620/632951


1
ขอบคุณ! มันเป็นอย่างนั้น - ฉันแสดงตัวอย่าง Softkeyboard จาก SDK ที่เก่ากว่าและดูเหมือนว่าตัวอย่าง Softkeyboard ได้ถูกติดตั้งแล้ว (โดยค่าเริ่มต้น?!) ในอุปกรณ์จำลอง (แต่เป็นรุ่นที่ใหม่กว่า) หลังจากเปลี่ยนชื่อแอปพลิเคชันของฉันทุกอย่างทำงานได้ตามที่คาดไว้ ...
ndbd

2
@Alexander: คุณสามารถปรับปรุงคำตอบนี้เพื่อรวมแฟล็ก -d ได้หรือไม่?
David Alves

8
ไม่จำเป็นต้องถอนการติดตั้งแอพ ใช้ค่าสถานะ: -r -d ค่าสถานะเหล่านี้หมายถึงการติดตั้งและลดระดับใหม่
petrsyn

1
@petrsyn: ฉันจะวางธงเหล่านี้ใน Eclipse ได้ที่ไหน?
Violet Giraffe

2
@VioletGiraffe มันถูกใช้ในบรรทัดคำสั่ง: adb install -r -d Application.apk
petrsyn

61

นอกจากนี้คุณยังสามารถพิจารณาเพิ่มการ-dตั้งค่าสถานะเพื่อ adb ติดตั้ง ควรละเว้นข้อผิดพลาดนี้

adb install -r -d abc.apk

8
ไม่มีเอกสาร แต่ทำงานได้ ฉันต้องเขียนแยกต่างหากเป็น -d การรวมกับ -r เนื่องจาก -rd ไม่ทำงาน
mhsmith

3
ตอนนี้เป็นเอกสารแล้ว: -d: allow version code downgrade. ยังคงต้องแยกจาก-r
wisbucky

1
จากเอกสาร (2020): -d: allow version code downgrade (debuggable packages only)
Alex.K

30

ถอนการติดตั้งแอปพลิเคชันของคุณจากตัวจำลองก่อน:

adb -e uninstall your.application.package.name

จากนั้นลองติดตั้งแอปพลิเคชันอีกครั้ง


8
หรืออุปกรณ์ทางกายภาพการเชื่อมต่อadb -s DEVICESERIALNUMBER uninstall your.application.package.nameที่สามารถพบการใช้DEVICESERIALNUMBER adb devices -l
Joel Purra

ดูเหมือนว่าขั้นตอนที่ไม่จำเป็นถ้าคุณเพียงแค่ต้องการดีบักแอปพลิเคชัน
IgorGanapolsky

8

สิ่งนี้เกิดขึ้นในโครงการของฉันเพราะฉันใช้ทรัพยากร XML เพื่อตั้งรหัสเวอร์ชัน

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

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

นี่ไม่ใช่ปัญหาในรุ่นก่อนหน้าของadbแต่เป็นของplatform-toolsr16 นี้จะไม่ถูกแก้ไขเป็นจำนวนเต็มที่เหมาะสมอีกต่อไป คุณสามารถบังคับให้ติดตั้งใหม่โดยใช้adb -rหรือหลีกเลี่ยงปัญหาทั้งหมดโดยใช้ตัวอักษรในไฟล์ Manifest:

android:versionCode="64"

นี่เป็นปัญหาสำหรับผมและผมเห็นว่ามันไม่ได้แก้ไขปัญหาได้อย่างถูกต้อง versionCode แม้เพิ่มขึ้น (อดีต: 65) ไม่ได้หลีกเลี่ยงการ INSTALL_FAILED_VERSION_DOWNGRADE
สแตน Kurdziel

5

สิ่งนี้สามารถเกิดขึ้นได้เมื่อพยายามติดตั้ง APK ดีบั๊ก / ไม่ได้ลงชื่อที่ด้านบนของ APK ที่ลงนามแล้วจาก 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]

วิธีแก้ปัญหานี้คือการถอนการติดตั้งแล้วติดตั้งใหม่หรือเรียกใช้อีกครั้งจาก IDE


ฉันไม่ได้เป็นนักลงคะแนนเสียง แต่ฉันเดาว่านี่ไม่ใช่เหตุผลเดียวว่าทำไมถึงเกิดขึ้นได้
Viccari

3

INSTALL_FAILED_VERSION_DOWNGRADE

แอพ Android ทั้งหมดมีชื่อแพ็คเกจ ชื่อแพ็คเกจระบุแอปบนอุปกรณ์โดยไม่ซ้ำกัน หากชื่อแพคเกจเดียวกับแอพที่ติดตั้งบนอุปกรณ์แล้วข้อผิดพลาดนี้จะแสดง

  1. คุณสามารถถอนการติดตั้งแอปพลิเคชั่นจากอุปกรณ์ของคุณก่อนจากนั้นติดตั้งแอปพลิเคชันใหม่
  2. คุณก็สามารถเพิ่มจำนวนโดยหนึ่งทุกครั้งที่มีรุ่นใหม่ออกมา

1
คุณถูกต้อง versionCode จะต้องเพิ่มขึ้นในแต่ละรุ่น อย่างไรก็ตามไม่ใช่เวลาในการพัฒนาก่อนปล่อย นอกจากนี้คุณควรติดตั้ง apk ด้วย versionCode เดียวกันบน apk ที่ติดตั้งไว้แล้ว (โดยไม่ถอนการติดตั้ง) ลางสังหรณ์ของฉันคือปัญหาคือทรัพยากรที่อ้างถึง versionCode - ดู: stackoverflow.com/a/14946938/431296
Stan Kurdziel

3

ที่ Marshmallow ฉันพบข้อผิดพลาดนี้

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

กำลังมองหาวิธีการแก้ปัญหาฉันค้นหาและมาที่นี่ ฉันลบแอพแล้วแต่ยังมีปัญหานี้ใน Nexus 6 ในภายหลังพบว่าใน

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

2

ตาม sdk src code จาก ... \ 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;

หากแพ็คเกจใหม่มีรหัสเวอร์ชั่นเก่ากว่าแพ็คเกจที่ติดตั้งในปัจจุบัน


ไม่ควรเกิดขึ้นกับรุ่นรหัสเดียวกันแม้ว่า
Stan Kurdziel

2

ฉันมีปัญหาเดียวกัน ผมได้รับข้อผิดพลาดเมื่อฉันพยายามที่จะทำงานในอุปกรณ์ Android ของฉันไม่ได้จำลอง

sudo ionic run android 

ฉันสามารถแก้ไขได้ด้วยการเรียกใช้

adb uninstall com.mypackage.name


1

สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันนำเข้าแอป Android Studio ลงใน eclipse

ฉันคิดว่าไฟล์ andoridmanifest.xml ต้องได้รับการแก้ไขเล็กน้อยเมื่อนำเข้าจากโครงการ android studio ฉันสร้างโครงการทดสอบใหม่และคัดลอกส่วนหัวเพื่อให้ตรงกับ voila แก้ไขปัญหาแล้ว


1

ข้อผิดพลาดนี้ปรากฏในโครงการ Android ของฉันที่มีไฟล์ gfx หลายประเภท ในตอนท้ายไม่ยอมรับการเปลี่ยนแปลงไฟล์รายการ

เนื่องจากฉันขาดความรู้เกี่ยวกับอุปกรณ์ android ฉันลืมไปว่าอุปกรณ์ทดสอบของฉันมีผู้ใช้คนที่สอง ผู้ใช้รายนี้มีเวอร์ชันแอพของฉันที่ติดตั้งดังนั้นฉันต้องลบแอพสำหรับบัญชีผู้ใช้นี้และใช้งาน


0

สิ่งที่ยังคงฆ่าฉันก็คือฉันไม่รู้ว่าแอพนี้ติดตั้งสำหรับบัญชีผู้ใช้ของฉัน (แม้ว่าฉันจะถอนการติดตั้งสำหรับบัญชีอื่น ๆ )

ดังนั้นฉันจึงค้นหาแอพในตัวจัดการแอพและคลิกที่ถอนการติดตั้งสำหรับผู้ใช้ทั้งหมด

ป้อนคำอธิบายรูปภาพที่นี่



0

อาจเป็นปัญหากับการขึ้นต่อกันของบริการ Google Play มากกว่าปัญหารุ่นแอปจริง

บางครั้งมันไม่ใช่กรณีที่:

a) มีเวอร์ชันที่มีอยู่ของแอพที่ติดตั้งใหม่กว่าหรือไม่ b) มีแอพเวอร์ชันปัจจุบันติดตั้งอยู่ในบัญชีผู้ใช้อื่นบนอุปกรณ์

ดังนั้นข้อผิดพลาดเป็นเพียงการปลอม

ในกรณีของฉันฉันมี:

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'

แต่เมื่อฉันลอง

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'

ฉันได้รับข้อผิดพลาดเกี่ยวกับ androidX เนื่องจากยังไม่ได้อัพเกรดเป็น androidX และยังไม่พร้อมที่จะทำ ฉันพบว่าการใช้งานเวอร์ชันล่าสุด 16.xy และฉันไม่ได้รับข้อความแสดงข้อผิดพลาดอีกต่อไป ยิ่งกว่านั้นฉันสามารถรอจนกระทั่งภายหลังเมื่อฉันพร้อมอัพเกรดเป็น 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.+'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.