Недостатки в применении Multidexing для Android

Недавно я прочитал о пределе метода Dalvik 65K. Я понял, что список вызовов метода может вызывать только первые обращения к методу 65536. Чтобы решить эту проблему, мы имеем множество решений. Один из них – мультисайдинг, в котором мы разделили файлы .dex на число классов [classes.dex, classes1.dex …], используя библиотеку поддержки Android.

То, что я не понял, заключается в том, какой недостаток имеет приложение для android из-за этого мультисайкса и почему мы должны прилагать много усилий для минимизации количества ссылочных методов.

В принципе, в моем понимании, чтобы уменьшить количество меток, мне приходится уменьшать модуляцию, что делает мой код менее понятным, оставляя в стороне количество часов, сжигаемых при чередовании кодов сторонних библиотек. Уменьшает количество методов, которое стоит?

Solutions Collecting From Web of "Недостатки в применении Multidexing для Android"

Вы задумываетесь о мультидексе, вместо этого вы должны наблюдать и выявлять, есть ли какие-либо проблемы с производительностью в вашем приложении, профилируя ваше приложение.

Мультидексинг вряд ли увеличивает любой размер кода, основные проблемы с размером и производительностью связаны с ресурсами анимации / изображения / аудио / видео, именно они увеличивают размер и снижают производительность.

В том числе многие сторонние библиотеки в конечном итоге пройдут ограничение на 64 тыс., И почти все приложения сегодня мультимедированы. Сегодня пользователям требуется многозадачное приложение, которое требует интеграции со многими сторонними библиотеками.

Только когда вы делаете анимационное / игровое программирование, где скорость имеет наибольшее значение, более вызовы методов могут быть вредными, но это не имеет ничего общего с мультисайсированием, даже плохо написанное небольшое приложение с несколькими приложениями будет плохо работать на любом устройстве.

Время запуска повлияет на мультидексинг, но его, безусловно, можно улучшить, изменив логику приложения, чтобы отложить загрузку другой дорогостоящей библиотеки и ресурсов.

Уменьшает количество методов, которое стоит ?

НЕТ

В идеале вы должны использовать больше методов и модулировать свой код, потому что тестирование и изменение мобильных приложений является огромной проблемой после публикации. Отладка и удаление ошибок являются более дорогостоящими, чем размер мультидекса и его влияние на производительность. Из-за крошечных экранов, разных брендов, разных пользовательских интерфейсов пользователи больше злятся на приложения на телефоне по сравнению с компьютерами. Удовлетворение потребностей пользователей станет проще, если код будет разделен на несколько отдельных тестируемых библиотек.

Главный недостаток – больший размер dex / apk. Файлы Dex имеют пулы констант, которые разделяются между всеми классами этого файла dex. Когда классы разбиваются на несколько файлов dex, эти общие константы должны дублироваться в каждом файле dex, в котором они используются.