Android เก็บไฟล์ APK ของแอพผู้ใช้ที่ติดตั้งไว้ใน/data/app
ไดเรกทอรีและแอประบบใน/system/app
ไดเรกทอรี
หมายความว่า Android แตกไฟล์ dex ออกจากไฟล์ APK ทุกครั้งที่เปิดแอปหรือไม่ ถ้าไม่ฉันสามารถลบไฟล์ APK อย่างปลอดภัยและยังคงรันแอพได้หรือไม่
Android เก็บไฟล์ APK ของแอพผู้ใช้ที่ติดตั้งไว้ใน/data/app
ไดเรกทอรีและแอประบบใน/system/app
ไดเรกทอรี
หมายความว่า Android แตกไฟล์ dex ออกจากไฟล์ APK ทุกครั้งที่เปิดแอปหรือไม่ ถ้าไม่ฉันสามารถลบไฟล์ APK อย่างปลอดภัยและยังคงรันแอพได้หรือไม่
คำตอบ:
APK ของ Android มักจะมีสิ่งเหล่านี้
assets/
lib/
META-INF/
res/
AndroidManifest.xml
classes.dex
เมื่อทำการติดตั้งไฟล์ APK จะถูกคัดลอกไปยัง/data/app
และclasses.dex
จะถูกแยกและ "ปรับให้เหมาะสม" โดยเรียกใช้dex2oat
บน (บน Android 5+ lib/
จะถูกแตกด้วย) ส่งผลให้เกิดการเพิ่มประสิทธิภาพถูกเก็บไว้ใน/data/dalvik-cache/
เพื่อให้แอปจะต้องมีการปรับให้เหมาะสมเพียงครั้งเดียวต่อการติดตั้งหรือปรับปรุง ทุกอย่างอื่นถูกเก็บไว้ใน APK ดังนั้นคำตอบแรกชัดเจนมาก: ต้องมีสิ่งที่ต้องการassets
และres
แอพนี้ต้องการและพวกเขาอยู่ใน APK ไฟล์ APK ถูกเก็บไว้เพื่อการสนับสนุน หากคุณลบ APK แอปจะไม่เริ่มต้นแน่นอน (แอป: สินทรัพย์ของฉันอยู่ที่ไหน)
ประการที่สอง Google Play เพิ่มการสนับสนุนสำหรับ "เดลต้า Update" มากนานที่ผ่านมา ในขั้นตอนการปรับปรุงเดลต้าความแตกต่างระหว่างแพคเกจเก่าและแพคเกจใหม่จะถูกคำนวณ จากนั้น GP จะดาวน์โหลด "Delta" และใช้การเปลี่ยนแปลงกับ APK ดั้งเดิมเพื่อให้ได้ผลลัพธ์ APK ที่อัปเดตซึ่งจะช่วยลดขนาดการดาวน์โหลด
APK มีการลงชื่อเสมอ สิ่งนี้สามารถป้องกันการดัดแปลงที่เป็นอันตรายในแพ็คเกจ แน่นอนว่าคุณไม่ต้องการติดตั้งแอพที่ถูกดัดแปลงโดยไม่รู้ว่ามีการเปลี่ยนแปลงอะไรหรือไม่ว่าไวรัสจะถูกฉีด META-INF/
ภายในเอพีเคทำงานเพื่อจุดประสงค์นี้ การเปลี่ยนแปลงที่ไม่เป็นทางการจะส่งผลให้ไม่มีการจับคู่ลายเซ็นและระบบ Android จะปฏิเสธที่จะติดตั้งแอพที่ถูกดัดแปลง
นอกจากนี้เมื่อคุณอัปเดต Android OS ไฟล์ dex ทั้งหมดจะถูก "ปรับให้เหมาะสม" อีกครั้งเพื่อให้คุณไม่จำเป็นต้องติดตั้งใหม่ทีละไฟล์ ตามที่กล่าวไว้ข้างต้นการปรับให้เหมาะสมต้องการclasses.dex
ไฟล์จากแพ็คเกจดั้งเดิม
lib/
จาก APK, iOS จะไม่แยกทุกอย่างออกจาก IPA เป็นเพียงการตรวจสอบความสมบูรณ์ขั้นพื้นฐาน