รหัสไปรษณีย์หมายถึงอะไรและมีความเหมาะสมกับวิธีที่เราใช้อุปกรณ์ Android ของเราอย่างไร


19

"zipalign" หมายถึงอะไรและความสำคัญของมันคืออะไร?

เมื่อ ROM อ้างว่า "zipaligned" หมายความว่าอะไรและอะไรแตกต่างจาก ROM ที่ไม่ได้ "zipaligned"?

คำตอบ:


21

กลไกนี้อธิบายไว้ที่ไซต์นักพัฒนา Androidดังนี้:

zipalign เป็นเครื่องมือจัดตำแหน่งไฟล์เก็บถาวรที่จัดเตรียมการเพิ่มประสิทธิภาพที่สำคัญสำหรับไฟล์แอปพลิเคชัน Android (.apk) จุดประสงค์คือเพื่อให้แน่ใจว่าข้อมูลที่ไม่มีการบีบอัดทั้งหมดเริ่มต้นด้วยการจัดเรียงแบบเฉพาะที่สัมพันธ์กับการเริ่มต้นของไฟล์ โดยเฉพาะอย่างยิ่งจะทำให้ข้อมูลที่ไม่มีการบีบอัดทั้งหมดภายใน. apk เช่นรูปภาพหรือไฟล์ดิบถูกจัดตำแหน่งในขอบเขต 4 ไบต์ สิ่งนี้อนุญาตให้เข้าถึงส่วนทั้งหมดได้โดยตรงด้วย mmap () แม้ว่าจะมีข้อมูลไบนารีพร้อมข้อ จำกัด การจัดตำแหน่ง ประโยชน์คือการลดจำนวน RAM ที่ใช้ไปเมื่อเรียกใช้แอปพลิเคชัน

กล่าวโดยย่อ: .apkเนื้อหาสามารถเข้าถึงได้ง่ายขึ้น / เร็วขึ้น / เหมาะสมที่สุดเนื่องจากลำดับของข้อมูลภายในไฟล์ที่จัดเก็บ

สำหรับข้อมูลที่ลึกซึ้งยิ่งขึ้นมี "คู่มือที่สมบูรณ์" ที่ AddictiveTips: Zipalign ใน Android คืออะไรและวิธีการสร้างแอป Zipalignedซึ่งตอบคำถามส่วนที่สองของคุณ:

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


สำหรับโปรแกรมเมอร์มันคล้ายกับการจัดแนว struct ใน C ไม่มากstruct x { uint16_t id; uint32_t data[100]; };ถ้าคุณต้องการให้มันอยู่ในแนว 32- บิต; ใช้struct x { uint16_t id; uint16_t padding; uint32_t data[100]; };
แมทธิวอ่าน

ดูเหมือนจะไม่มีข้อเสียทำไมแอปทั้งหมดจึงจัดแนว zip ไม่ถูกต้อง นี่เป็นเรื่องที่น่ากังวลสำหรับผู้ใช้หรือเกี่ยวข้องกับนักพัฒนาเท่านั้นหรือไม่
Matt

1
มันเป็นขั้นตอนเพิ่มเติมสำหรับผู้พัฒนาที่ฉันจะพูด และแน่นอนว่าประสิทธิภาพนั้นเป็นข้อกังวลสำหรับผู้ใช้;)
Izzy

1

ในการเพิ่มไปด้านบนวิธีการทำงานของ zipalign -

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

เนื่องจาก Android ใช้ระบบปฏิบัติการ Linux การแมปหน่วยความจำจึงมีบทบาทสำคัญในการจัดการกระบวนการอย่างมีประสิทธิภาพ โดยพื้นฐานแล้วการจัดตำแหน่งที่ดีที่สุดสำหรับรหัสการจัดการทรัพยากรของ Android OS คือขอบเขต 4 ไบต์ สิ่งนี้หมายความว่าถ้า APKs ถูกแมปหน่วยความจำกับขอบเขต 4 ไบต์และจัดตำแหน่งให้สอดคล้องกัน OS จะไม่จำเป็นต้อง 'อ่านผ่าน' แพคเกจแอปพลิเคชันทั้งหมดเพื่อไปยังรายการข้อมูลที่ต้องการ ทุกขั้นตอนของระบบจะทราบล่วงหน้าว่าจะค้นหาทรัพยากรที่ต้องการได้จากที่ใดและจะดำเนินการได้อย่างราบรื่นและเร็วขึ้น

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

แหล่ง


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