มีวิธีใดบ้างที่จะละเว้น INSTALL_FAILED_VERSION_DOWNGRADE ในการติดตั้งแอปพลิเคชันด้วย Android Debug Bridge


121

ดูเหมือนว่า Android 4.2 ล่าสุดได้นำเสนอเงื่อนไขข้อผิดพลาดนี้ในการติดตั้งเมื่อมีคนพยายามติดตั้ง APK ด้วยเวอร์ชันที่ต่ำกว่า ในรุ่นก่อนหน้าของ Android adb install -r <link to APK>หนึ่งจะสามารถติดตั้งเก่าเอพีเคก็ผ่าน เพื่อวัตถุประสงค์ในการดีบักฉันมักจะต้องทดสอบ APK รุ่นเก่าอีกครั้ง และ-rแฟล็กจะแทนที่บิวด์เก่าใน Android เวอร์ชันเก่า มีวิธีแก้ไขที่จะเพิกเฉย[INSTALL_FAILED_VERSION_DOWNGRADE]หรือไม่?


คุณหมายถึงนอกเหนือจากการถอนการติดตั้งเวอร์ชันที่ใหม่กว่าหรือไม่?
CommonsWare

แก้ไข; ฉันคิดว่า-rธงจะจัดการสิ่งนี้ได้
AaronMT

5
คำถามนี้ยังใช้ได้สำหรับกรณีที่คุณสร้างจำนวนที่ผิดพลาด (ค่อนข้างไม่ถูกต้อง) เช่นบางที v1.0 ของคุณจากกล่อง dev มี versionCode ที่สูงกว่า v2.0 จากบิลด์เซิร์ฟเวอร์
parkerfath

คำตอบ:


288

ดูเหมือนว่าเครื่องมือ adb เวอร์ชันล่าสุดมี "การตั้งค่าสถานะอนุญาตให้ดาวน์เกรด" ซึ่งไม่ปรากฏในวิธีใช้ adb แต่จะแสดงในวิธีใช้ "pm" บนอุปกรณ์ ดังนั้นใช้: adb install -r -d <link to apk>


3
พยายามโดยadb install -rd <apkfile>ที่ไม่ได้ผล Versino ของคุณ (โดยแยกตัวเลือกออก) ใช้งานได้ดี ขอบคุณ!
MarSoft

1
และดูเหมือนว่าจะได้รับการบันทึกไว้แล้ว! ไม่ใช่ว่าคุณต้องใช้ -r -d, -rd จะไม่ทำงาน
plaisthos

ตัวอย่างเช่นในการถอนการติดตั้ง (ปรับลด) Waze 4.0.0.2 และติดตั้งรุ่น 3.9.5.3: ADB ติดตั้ง -r -d Waze_3.9.5.3.apk วิธีนี้คุณจะไม่สูญเสียข้อมูลแอป
Derek Gogol

12
ตั้งแต่ Android 7 (Nougat) adb install -d จะไม่ทำงานอีกต่อไปเว้นแต่ว่าแพคเกจจะถูกทำเครื่องหมายว่า debuggable android.googlesource.com/platform/frameworks/base/+/921dd75
Darpan

20

คุณสามารถลองใช้adb uninstall -k <package>และติดตั้ง apk รุ่นเก่าได้ จากคู่มือการใช้งาน adb:

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

ฉันได้ลองใช้ apk ด้วยตัวเองแล้วและดูเหมือนว่าจะใช้ได้กับข้อมูลส่วนใหญ่ (ข้อมูลบางอย่างเช่น RawContacts ไม่ได้รับการบันทึก)


ดูเหมือนว่าคำสั่งนี้ไม่ได้ดำเนินการถอนการติดตั้ง แต่เพียงแค่รับคำเตือน คำสั่งในการดำเนินการนี้ดูเหมือนจะเป็นadb shell pm uninstall -k <package>จริง
Paul Lammertsma

นอกจากนี้ยังมีประโยชน์สำหรับการปรับลดรุ่นหาก adb -d ยังคงบ่นเหมือนเดิม
Pointer Null

14

คุณเปิดใช้งานหลายบัญชีบนอุปกรณ์ของคุณ (และผลักดัน apk ของคุณผ่าน ADB) หรือไม่ หากเป็นเช่นนั้นคุณต้องลบ apk ในทุกบัญชี หลังจากถอนการติดตั้งเสร็จสิ้นการกดของคุณจะตกลง


การกู้คืนข้อมูลสำรองผ่าน Titanium Backup ไม่ทำงาน การติดตั้งใหม่ไม่ทำงาน การติดตั้งผ่าน APK และ / หรือการติดตั้ง adb ไม่ทำงาน นี่ทำให้ฉันเสียเงิน 1,5 ชม. และเคล็ดลับง่ายๆของคุณก็เป็นเคล็ดลับ ขอบคุณ!
Bentolor

3

ในกรณีของฉันมันเป็นบริการ Google Play เวอร์ชันเก่าที่มาพร้อมกับโปรเจ็กต์ของฉัน ฉันใช้ Android Studio ฉันเรียกใช้การอัปเดตบน SDK และนำเข้าไลบรารีที่อัปเดตแล้วข้อผิดพลาดนั้นก็หายไป ดังนั้นคำแนะนำของฉัน: อัปเดตไลบรารีล่าสุดที่อ้างถึงโดยโครงการของคุณ


1

ลองถอนการติดตั้งแอพเวอร์ชันที่ติดตั้งก่อนหน้านี้โดยใช้ -

adb uninstall com.package.name

จากนั้นติดตั้ง / เรียกใช้แอปของคุณอีกครั้ง


0

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


1
เหตุใดจึงถูกลดลง อาจไม่ใช่คำตอบที่ดีที่สุด แต่ดูเหมือนว่าจะเป็นทางออกที่ใช้ได้ (และอาจจะง่ายที่สุด) สำหรับคนที่ยังใหม่กับสิ่งนี้! โปรดแสดงความคิดเห็นสำหรับคำตอบเช่นนี้เนื่องจากมีความสำคัญไม่เพียง แต่สำหรับผู้ตอบเท่านั้น แต่สำหรับผู้อ่านที่เข้าชมคำถามนี้ในภายหลัง : - |
jedd.ahyoung

นี่เป็นสิ่งที่สามารถทำได้แน่นอน เห็นได้ชัดอยู่แล้ว คำถามนี้ถามว่ามีวิธีข้ามการตรวจสอบนี้และอนุญาตให้ดาวน์เกรดหรือไม่ และคำตอบคือใช่ คำตอบนี้โดยทั่วไปบอกว่าไม่
tasomaniac

0

ฉันก็ประสบปัญหาเดียวกันสามารถแก้ไขได้ด้วยขั้นตอนด้านล่างซึ่งง่ายกว่าการลบ apk ใด ๆ ออกจากอุปกรณ์ -

1) รันคำสั่ง "adb logcat | grep -i version" บนเทอร์มินัล

2) มองหาบรรทัดเฉพาะซึ่งจะแสดงที่ส่วนท้ายของ logcat -

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

3) คัดลอกเวอร์ชันปัจจุบัน (เช่น 9109) และวางใน AndroidManifest.xml ดังที่แสดงด้านล่าง -

android:versionCode="9109"

ตอนนี้ทำความสะอาดและสร้างแอปพลิเคชันใหม่และควรใช้งานได้ดี


0

อาจเป็นปัญหากับการอ้างอิงของบริการ Google Play

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

ก) มีการติดตั้งแอปเวอร์ชันที่มีอยู่ใหม่กว่าหรือไม่

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.+'

-3

สำหรับผู้ที่ประสบปัญหากับ Xiaomi:

adb shell pm uninstall <package_name>

สิ่งนี้ไม่ได้ช่วยอะไรและควรอธิบายว่าทำไมจึงต้องทำด้วยวิธีนี้
Benyamin Limanto
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.