Указание ndkVersion в build.gradle выводит apk с меньшим размером загрузки?

#android #android-ndk

Вопрос:

Поэтому в моем приложении с собственными библиотеками (некоторые предварительно скомпилированные файлы .so, некоторые компилируются во время сборки), если я не укажу ndkVersion в build.gradle, то он генерирует apk размером ~8,8 Мбайт (размер загрузки определяется apkanalyzer). Когда значение ndkVersion равно 17.2.4988734, он генерирует apk размером ~7,6 Мбит / с. Когда значение ndkVersion равно 22.1.7171670, он генерирует apk размером ~7,2 Мбайт.

Я понимаю, что, возможно, в NDK 22.1.7171670 есть оптимизация по сравнению с 17.2.4988734. Чего я не понимаю, так это почему существует значительная (каламбурная) разница в собственных библиотеках, когда не указывается ndkVersion?

Кроме того, изменение размера в основном происходит в предварительно скомпилированных файлах .so, а не в файлах, созданных системой сборки при создании apk.

Ответ №1:

Из документации:

При установке NDK Android Studio выбирает последний доступный NDK. Для большинства проектов достаточно установить эту версию NDK по умолчанию. Однако, если вашему проекту требуется одна или несколько конкретных версий NDK, вы можете загрузить и настроить определенные версии.

Таким образом, NDK 22.1.7171670 это лучше, чем последняя версия NDK, которая у вас есть (оптимизирована по размеру). и это разумно, потому что большинство новых выпусков сначала оптимизируют новый код для скорости, а затем беспокоятся о размере в более поздних версиях.