Что такое проблема 64К методов?

Посмотреть в Telegram: @AndroidSobes/163
Проблема 64К методов – это ограничение на количество методов в одном .dex-файле. Максимальное количество методов в .dex-файле равно 65536.

На ранних версиях Андроида приложение могло иметь только один .dex-файл. Проблема 64К ограничивала количество методов в приложении.

Почему ограничение в 65536 методов, а проблема называется 64K?

«‎K»‎ значит Kilo, что в computer science значит 1024*x. 1024*64 = 65536.

Почему возникла эта проблема?

Один класс в Java может иметь максимум 64К методов.
В Андроиде .dex-файл сделан по образу .class и поэтому наследует это ограничение.

Причина ограничения в том, что под индексы ссылок на методы в java- и dalvik-байткоде выделено 16 бит. Т.е. максимальное число 2^16 = 65536.

Как решать проблему?

На ранних версиях Андроида единственным решением было уменьшение количества методов. Для этого использовался Proguard.

Сейчас проблема решается включением Multidex. В этом случае приложение может иметь более одного .dex-файла.