เพื่อตอบคำถามของคุณ:
ฉันไม่ทราบว่า Android เวอร์ชั่นใดที่ Dalvik ไม่ถูกต้องเมื่อบู๊ต บางทีเวอร์ชันเริ่มต้น 1.0 มีสิ่งนั้นฉันไม่รู้จริง ๆ ได้ผ่าน Eclair, Froyo, Gingerbread, Ice Cream Sandwich แล้ว คุณต้องมองเข้าไปในแผนผังต้นกำเนิดและทำการ rebase กลับไปที่ CupCake หรือ Donut (1.5 และ 1.6 ตามลำดับ)
เหตุผลอย่างละเอียด :)
เหตุผลที่ต้องใช้Wipe Cacheนั้นเป็นเพราะ apks ทั้งหมดรวมถึง system apks มีไฟล์dexติดอยู่เมื่อ ROM ถูกบูทขึ้นเป็นครั้งแรก Dalvik ของ Android จะผ่านแต่ละ apks เหล่านั้นและแยก ไฟล์ dex จากมันและวางไว้ในแคช/data/dalvik-cache
จึงเร่งการดำเนินการของแอปเอง
ROM ส่วนใหญ่มี apks ที่เป็นodexแคชจะถูกรวมเข้าไปใน apk ของตัวเองเป็นไฟล์ภายนอก
ตัวดัดแปลง ROM ที่กำหนดเองจำนวนมากจะมีapod deodex 'd ซึ่งหมายความว่าไฟล์ dex จะถูกแทนที่และบรรจุใหม่เพื่อให้ง่ายต่อการปรับธีม / ดัดแปลง apk
เมื่อคุณแฟลช ROM ที่กำหนดเองและไม่ได้ล้างแคช apk ของ ROM ที่กำหนดเองที่ใหม่กว่าจะมีไฟล์dex ที่แตกต่างกันแนบมาและเมื่อ Dalvik ผ่านไฟล์เหล่านั้นมันจะเห็นไฟล์ dex แคชที่มีอยู่ในไดเรกทอรีและ ข้ามไปจากนั้นเมื่อคุณเรียกใช้แอปคุณจะมั่นใจได้ว่ามีแรงใกล้เคียงหรือ ANR (แอปพลิเคชันไม่ตอบสนอง)
คุณยังไม่ได้สูญเสียข้อมูลต่อ se ถ้าใช้การกู้คืน ClockworkMod และเช็ดให้ข้อมูลที่ถูกเลือกแล้วใช่การตั้งค่าทั้งหมดที่เกี่ยวข้องกับการปพลิเคชันที่มีการเช็ดหมดจด - /data/app
มองใน
ดังนั้นคุณสามารถล้างแคชได้ แต่ไม่ใช่เช็ดข้อมูลสิ่งที่ทำอย่างมีประสิทธิภาพนั้นจะถูก slotted ใน apks ที่ใหม่กว่าซึ่งมีการตั้งค่าไว้ นี่เป็นสถานการณ์ที่พบได้ทั่วไปกับ CyanogenMod nightlies ที่การสร้าง ROM ที่ไม่เสถียร / การทดสอบถูกกระพริบและการตั้งค่าที่เก็บไว้ด้วยการล้างแคช ระยะทางจะแตกต่างกันไปขึ้นอยู่กับแอพที่ดาวน์โหลดจากตลาด
เพื่อผลลัพธ์ที่ดีที่สุดคุณควรดำเนินการทั้งWipe DataและWipe Cacheเพื่อรับรองความถูกต้องและไม่มีข้อผิดพลาดของโปรแกรมภายในแอป
ใช่นั่นหมายความว่าเวลาบูตจะช้าลง แต่จะเริ่มต้นทันที หลังจากนั้นมันก็จะทำการบูทได้เร็วขึ้น สรุปสั้น ๆ การล้างแคชตัวเองผ่าน CWM จริง ๆ แล้วช่วยเพิ่มความเร็วและมั่นใจว่าไม่มีสารตกค้างจากรุ่นก่อนหน้าในสถานที่ซึ่งสามารถ munged ใน (ตอนนี้ในขั้นตอนนี้กำลังตระหนักถึงคำถามของคุณดังนั้นในความเป็นธรรมทั้งหมด เห็น Android ไม่ทำการแคชของตัวเองเมื่อบู๊ตเมื่อกระพริบ ROM ใหม่ .. )
ใช้แหล่งที่มาของลุคอย่างจริงจัง! : D
frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
คือรหัสการบูตสำหรับ apk runtime แต่ละตัว มันทำปฏิกิริยากับรหัส C ดั้งเดิมที่พบในdalvik
แผนผังไดเรกทอรีซึ่งมีคำสั่งชิปเซ็ตเฉพาะเพื่อตีความ bytecode ภายใน apk ไปยังชุดคำสั่ง CPU ดั้งเดิม ARMv6 นั้นเป็น ARMv5 ที่แฮ็ก (ซึ่งเป็นชิปเซ็ตดั้งเดิมใน Android รุ่นเก่าก่อน Eclair) ดังนั้นคุณจะไม่เห็น ARMv6 ในซอร์ส AOSP จาก google CyanogenMod จะมี ARMv6 ในแหล่งที่มา