สังเกตพฤติกรรมนี้แปลกมากกับแอปพลิเคชัน Android สถานการณ์โดยประมาณ:
- รุ่น A ติดตั้งบนอุปกรณ์
- แอปพลิเคชั่นใช้ได้เลย
- รุ่น B ที่ติดตั้งบนอุปกรณ์ (B> A)
- แอปพลิเคชั่นใช้ได้เลย
- อุปกรณ์ปิดตัวลงเนื่องจากแบตเตอรี่หมด
- เปิดใช้งานอุปกรณ์
- เวอร์ชัน A ของแอปพลิเคชันทำงานบนอุปกรณ์อีกครั้ง
ข้อมูลเพิ่มเติม:
- แอปพลิเคชันไม่ได้รับการแจกจ่ายผ่าน Google Play แต่ติดตั้งในสถานที่ผ่านการเชื่อมต่อ USB (หมายเหตุ: แอปพลิเคชันทำงานอยู่ในระหว่างการผลิต แต่ไม่ได้ติดตั้งผ่านทาง AndroidStudio)
- ร้านเล็ก
- Android 5.1 (API 22)
ฉันเดาว่าฉันมีคำถามสองข้อ:
- เหตุใดอุปกรณ์จึงแคช APK ที่เก่ากว่า (และแคชอยู่ที่ใด)
- แอปพลิเคชันใดที่สามารถย้อนกลับไปเป็นเวอร์ชันก่อนหน้านี้ได้
แก้ไข (ข้อมูลเพิ่มเติม):
- ดูเหมือนว่าหลังจาก APK ถูกย้อนกลับแอปพลิเคชันจะสูญเสียสิทธิ์บางอย่าง (อาจเป็นได้ทั้งหมด) ฟังก์ชั่นที่ทำงานก่อนที่ roll-back จะหยุดทำงานเนื่องจาก SecurityException ถูกส่งออกมาจาก API ของ Android สิ่งนี้เกิดขึ้นแม้ว่า Android เวอร์ชันนี้จะไม่มีสิทธิ์ใช้งานรันไทม์!
- หลังจากการเรียกดูระบบแฟ้มแท็บเล็ตของผมแน่นอนดู APK ที่หลายแอปพำนักอยู่ภายใต้เส้นทางที่คล้ายกัน:
/data/app/com.myapp-2/base.apk,/data/app/com.myapp-3/base.apkฯลฯ
สมมติฐานปัจจุบันของฉันคือการที่แบตเตอรี่หมดทำให้แท็บเล็ต "รีเซ็ต" สถานะของมัน (ตัวอย่างเช่นนาฬิกาถูกรีเซ็ตด้วย) และเมื่อมีการขับเคลื่อนอีกครั้งมันจะทำให้เกิดความสับสนระหว่าง APK ของแอพและโหลดผิด
อย่างไรก็ตามฉันไม่มีเงื่อนงำว่าทำไมมันจะทำเช่นนั้นหรือวิธีการป้องกันพฤติกรรมนี้