Android MultiDex - вопросы по внутренней работе

Недавно я обнаружил новую функциональность MultiDex от Android для работы с приложениями, имеющими более 65 000 ссылок. Увидеть:https://developer.android.com/tools/building/multidex.html

Может ли кто-нибудь помочь мне понять следующие вопросы:

1) Как плагин сборки Gradle определяет, что поместить в первичный файл dex (classes.dex) по сравнению со вторичными файлами dex? Основываясь на документе, есть определенные вещи, которые должны быть в основном dex, но это не дает никаких примеров. Все ли действия должны быть в основном файле dex?

Цитируемый текст:

Существуют сложные требования относительно того, какие классы необходимы в первичном файле dex при выполнении во время выполнения Dalvik. Обновления инструментария сборки Android обрабатывают требования Android, но возможно, что другие включенные библиотеки имеют дополнительные требования к зависимостям, включая использование самоанализа или вызова методов Java из собственного кода. Некоторые библиотеки могут быть недоступны до тех пор, пока не будут обновлены инструменты сборки multidex, чтобы вы могли указать классы, которые должны быть включены в основной файл dex.

2) При сборке только для Android API уровня 21 (Android L) и выше, в плагине Gradle Build действует другое поведение. Он говорит, что это намного быстрее, потому что он «собирает каждый модуль приложения (включая зависимости) как отдельные файлы dex. Обычно это называется предварительным индексированием». Какое определение для модуля в Android? Это модули Java Library, Android Library и Android, упомянутые здесь:http://developer.android.com/sdk/installing/studio-build.html#projectModules? Дистанционные или локальные двоичные зависимости (например, Jars) считаются отдельными модулями и, таким образом, помещаются в другой файл dex или включаются в модуль в зависимости от них?

Ответы на вопрос(2)

Ваш ответ на вопрос