แพ็คเกจ A (เวอร์ชั่นเก่า / เวอร์ชั่นพื้นฐาน)
คลิกหรือวางไฟล์ .apk / .xapk ก่อน
แพ็คเกจ B (เวอร์ชั่นใหม่ / อัพเดท)
คลิกหรือวางไฟล์ .apk / .xapk ไฟล์ที่สอง
เหตุใดการเปรียบเทียบเวอร์ชัน APK จึงป้องกันการอัปเดตที่ล้มเหลว
เมื่อคุณติดตั้งแอป Android เวอร์ชันที่ใหม่กว่าบนการติดตั้งที่มีอยู่ PackageManager ของ Android จะบังคับใช้กฎที่เข้มงวดสองข้อ: versionCode ของแพ็คเกจใหม่จะต้องมากกว่าหรือเท่ากับบิลด์ที่ติดตั้ง และใบรับรองการลงนามภายใน META-INF/ (หรือ APK Signing Block v2/v3) จะต้องเหมือนกันแบบไบต์ต่อไบต์
- การจับคู่สรุปใบรับรองการลงนาม: คำนวณลายนิ้วมือ SHA-256 ของบล็อกลายเซ็น .RSA / .DSA / .EC ในแพ็คเกจทั้งสอง เพื่อให้คุณทราบได้ทันทีว่าการอัปเดตแบบแทนที่จะสำเร็จโดยไม่ต้องถอนการติดตั้งหรือไม่
- ความแตกต่างของ ABI และ DEX ดั้งเดิม: เน้นว่าการอัปเดตจะแยกไลบรารี armeabi-v7a 32 บิตหรือเพิ่มไฟล์ classes*.dex ใหม่หรือไม่
- เดลต้ารายการ CRC32: แสดงรายการไฟล์ที่เพิ่มหรือลบระหว่างบิลด์
Android ประเมินการอัปเดตแพ็คเกจอย่างไร (INSTALL_FAILED_UPDATE_INCOMPATIBLE)
หนึ่งในข้อผิดพลาดที่พบบ่อยที่สุดที่ผู้ใช้พบเมื่ออัปเดตแอปไซด์โหลดคือ "ไม่ได้ติดตั้งแอปเนื่องจากแพ็คเกจขัดแย้งกับแพ็คเกจที่มีอยู่" (รู้จักในบันทึกของ ADB ในชื่อ INSTALL_FAILED_UPDATE_INCOMPATIBLE) สิ่งนี้จะเกิดขึ้นเมื่อใดก็ตามที่แอปที่ติดตั้งมาจาก Google Play Store (ลงนามด้วยรหัสเผยแพร่ส่วนตัวของนักพัฒนา) และการอัปเดตถูกแปลงจากไฟล์แยก .xapk แบบแยก (ซึ่งจะต้องลงนามอีกครั้งด้วยรหัสลงนามตัวแปลงหลังจากรวมการแยก)
อย่างไรก็ตาม หากทั้งเวอร์ชันเก่าและเวอร์ชันใหม่ของคุณถูกแปลงโดยใช้ xapktoapk.com ไปป์ไลน์การลงนามตามที่กำหนดของเราจะใช้ใบรับรองการลงนามที่สอดคล้องกันเหมือนกันในการแปลง ซึ่งหมายความว่าคุณสามารถติดตั้ง APK ที่แปลงแล้วใหม่ทับ APK ที่แปลงแล้วได้โดยตรง โดยไม่ต้องถอนการติดตั้งหรือสูญเสียความคืบหน้าในแอป! ใช้เครื่องมือเปรียบเทียบด้านบนเพื่อยืนยันว่าทั้งสองไฟล์แชร์ข้อมูลสรุปใบรับรองเดียวกันก่อนที่คุณจะติดตั้ง