มีกระทู้เกี่ยวกับ MultiDex มากมาย ฉันมีประสบการณ์บางครั้งแก้ไขข้อผิดพลาดรวมถึงmultiDexEnabled true
ในdefaultConfig
ส่วนของ build.gradle ของฉัน
แต่คุณลักษณะนี้คืออะไร? สถานการณ์ในการใช้งานคืออะไร?
มีกระทู้เกี่ยวกับ MultiDex มากมาย ฉันมีประสบการณ์บางครั้งแก้ไขข้อผิดพลาดรวมถึงmultiDexEnabled true
ในdefaultConfig
ส่วนของ build.gradle ของฉัน
แต่คุณลักษณะนี้คืออะไร? สถานการณ์ในการใช้งานคืออะไร?
คำตอบ:
อ้างถึงเอกสาร :
ไฟล์แอปพลิเคชัน Android (APK) มีไฟล์ bytecode ที่เรียกใช้งานได้ในรูปแบบของไฟล์ Dalvik Executable (DEX) ซึ่งมีโค้ดคอมไพล์ที่ใช้ในการเรียกใช้แอปของคุณ ข้อมูลจำเพาะของ Dalvik Executable จำกัด จำนวนเมธอดทั้งหมดที่สามารถอ้างอิงได้ภายในไฟล์ DEX ไฟล์เดียวเป็น 65,536 รวมถึงวิธีการเฟรมเวิร์ก Android วิธีไลบรารีและวิธีการในโค้ดของคุณเอง การก้าวพ้นขีด จำกัด นี้ทำให้คุณต้องกำหนดค่ากระบวนการสร้างแอปของคุณเพื่อสร้างไฟล์ DEX มากกว่าหนึ่งไฟล์หรือที่เรียกว่าการกำหนดค่าแบบหลายมิติ
ดังนั้นคุณสมบัติคือ: ช่วยให้แอปที่ซับซ้อนของคุณรวบรวมได้ สถานการณ์ในการใช้งานคือเมื่อแอปของคุณไม่สามารถคอมไพล์ได้เนื่องจากกดขีด จำกัด การอ้างอิงเมธอด 64K DEX สิ่งนี้ปรากฏเป็นข้อผิดพลาดในการสร้างเช่น:
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
ไฟล์. dex ไฟล์เดียวสามารถมี 65,536 เมธอด (การอ้างอิง) ดังนั้นหากจำนวนการอ้างอิงเกิน 65,536 คุณจะใช้ multidex
โปรแกรมแอปพลิเคชัน Android ถูกรวบรวมเป็นไฟล์. dex ซึ่งจะถูกบีบอัดเป็นไฟล์. apk ไฟล์เดียว
DVM (Dalvik Virtual Machine) ใช้ไฟล์. dex / ไฟล์เพื่อเรียกใช้ bytecodes
อะไรทำให้จำนวนการอ้างอิงเกินขีด จำกัด 65,536?
วิธีการเขียนโดยคุณ + วิธีการของ Android Framework + ไลบรารีของบุคคลที่สาม (เช่น Volley, Retrofit, Facebook SDK เป็นต้น)
ฉันได้อ่าน "บางแห่ง"
App Compat 24.2.1 มีวิธีการ 16.5k
Google Play Services GCM 9.6.1 มี 16.7k วิธีการ
ดังนั้นหากคุณสร้างแอปพลิเคชัน Hello world แบบธรรมดาที่มี App Compat 24.2.1 แสดงว่าคุณเป็น1/4แล้ววิธีข้ามขีด จำกัด วิธี dex เดียว
Dexย่อมาจาก Dalvik Executable ซึ่งเป็นสิ่งที่ตัวประมวลผลเครื่องเสมือนของ Google (Dalvik) ใช้เพื่อจัดการกับแอปพลิเคชัน Android Android ถูกสร้างขึ้นโดยคำนึงถึงแอปขนาดเล็กและเรียบง่ายและข้อ จำกัด ของ Dalvik Executable หนึ่งตัวได้ตรึงหลังคาของการอ้างอิงโค้ดไว้ที่ 65,536 วิธี เนื่องจากปัญหานี้และวิธีที่เครื่อง Dalvik จัดการกับการเรียกใช้โค้ดจึงมีปัญหาในการคอมไพล์และการเรียกใช้จนกระทั่ง Monkey Patch หรือการรวมMultiDex การรวม MultiDex ใน Android Studioช่วยให้นักพัฒนา Android สามารถคอมไพล์และรันโค้ดเบสด้วยวิธีการมากกว่า 65,536 วิธี!
เว็บไซต์ทางการของนักพัฒนา Android ที่ได้รับการยอมรับ
If your minSdkVersion is set to 21 or higher, multidex is enabled by default and you do not need the multidex support library.
สิ่งที่อนุญาตคือให้ Google (และอื่น ๆ ) ใช้ DRM พูดว่า .. widevine ในส่วนของโค้ดที่ทำให้เกิดปัญหากับผู้ที่ไม่ใช่นักพัฒนาซอฟต์แวร์ส่วนใหญ่ ..