Có rất nhiều bài đăng về MultiDex. Đôi khi, tôi đã gặp phải các lỗi được giải quyết bao gồm cả multiDexEnabled true
trong defaultConfig
phần build.gradle của tôi.
Nhưng, chính xác thì tính năng này là gì? Các tình huống sử dụng nó là gì?
Có rất nhiều bài đăng về MultiDex. Đôi khi, tôi đã gặp phải các lỗi được giải quyết bao gồm cả multiDexEnabled true
trong defaultConfig
phần build.gradle của tôi.
Nhưng, chính xác thì tính năng này là gì? Các tình huống sử dụng nó là gì?
Câu trả lời:
Trích dẫn tài liệu :
Tệp ứng dụng Android (APK) chứa tệp bytecode thực thi ở dạng tệp Dalvik Executable (DEX), chứa mã đã biên dịch được sử dụng để chạy ứng dụng của bạn. Đặc tả Dalvik Executable giới hạn tổng số phương thức có thể được tham chiếu trong một tệp DEX là 65.536, bao gồm các phương thức khung Android, phương thức thư viện và phương thức trong mã của riêng bạn. Vượt qua giới hạn này yêu cầu bạn định cấu hình quy trình xây dựng ứng dụng của mình để tạo nhiều tệp DEX, được gọi là cấu hình đa cấp độ.
Vì vậy, tính năng là: nó cho phép ứng dụng phức tạp của bạn biên dịch. Các tình huống sử dụng nó là khi ứng dụng của bạn không thể biên dịch do đạt đến giới hạn tham chiếu phương thức DEX 64K. Điều này xuất hiện dưới dạng lỗi xây dựng, chẳng hạn như:
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
Một tệp .dex duy nhất có thể có 65.536 phương thức (tham chiếu), vì vậy nếu số lượng tham chiếu vượt quá 65.536, bạn sử dụng multidex.
Một chương trình ứng dụng android được biên dịch thành tệp .dex, tệp này lần lượt được nén thành một tệp .apk.
DVM (Máy ảo Dalvik) sử dụng tệp / tệp .dex để thực thi các mã byte.
Nguyên nhân nào khiến số lượng tham chiếu vượt quá giới hạn 65.536?
Các phương thức do bạn viết + Phương pháp Android Framework + Phương pháp thư viện bên thứ ba (ví dụ: Volley, Retrofit, Facebook SDK, v.v.).
Tôi đã đọc "đâu đó"
App Compat 24.2.1 chứa 16,5k phương thức
Google Play Services GCM 9.6.1 chứa 16,7k phương thức
Vì vậy, nếu bạn đã tạo một ứng dụng Hello world đơn giản có App Compat 24.2.1, bạn đã được 1/4 cách vượt qua giới hạn các phương thức dex đơn lẻ
Dex là viết tắt của Dalvik Executable, là bộ xử lý máy ảo của Google (Dalvik) sử dụng để xử lý các Ứng dụng Android. Android được xây dựng với các ứng dụng nhỏ và đơn giản trong tâm trí và các ràng buộc trên một Dalvik Executable duy nhất đã ghim mái nhà tham chiếu mã ở 65.536 phương thức. Do vấn đề này và cách máy Dalvik xử lý việc thực thi mã, đã có một số vấn đề về biên dịch và gọi, cho đến khi tích hợp Monkey Patch hoặc MultiDex . Tích hợp MultiDex trong Android Studio cho phép các Nhà phát triển Android có khả năng biên dịch và thực thi cơ sở mã với hơn 65.536 phương thức!
Đang xác nhận trang web chính thức của nhà phát triển Android.
If your minSdkVersion is set to 21 or higher, multidex is enabled by default and you do not need the multidex support library.