Почему сборка с бэкэндом IL2CPP приводит к увеличению размера apk в Unity - PullRequest
0 голосов
/ 26 сентября 2018

Я использую Unity 2018.2.3 с .Net 4.6 Scripting Runtime.
У меня две игры.При сборке с бэкэндом IL2CPP размер apk всегда больше, чем у моно.

Первая игра:
Размер APK с моно: 12,9 МБ
Размер APK с IL2CPP: 13,7 МБ

Вторая игра:
Размер APK с моно: 39 МБ
Размер APK с IL2CPP: 45 МБ

Почему это происходит?

1 Ответ

0 голосов
/ 26 сентября 2018

Это происходит по нескольким причинам.

Во-первых, сборка Android с Mono отправляет управляемые сборки в APK.Эти сборки точно вовремя скомпилированы в машинный код на устройстве Android.IL2CPP, с другой стороны, заблаговременно компилирует управляемые сборки в машинный код и отправляет машинный код в APK.Байт-код IL в этих управляемых сборках является более компактным, чем машинный код, по двум причинам:

  1. Только фактически выполненный управляемый код преобразуется в машинный код с помощью JIT.IL2CPP должен преобразовать все это.
  2. Обобщения должны быть расширены заранее.IL2CPP может использовать некоторые общие реализации, но не все (в частности, не общие реализации с аргументами типа значения).JIT генерировал только общие реализации по мере их использования.

Во-вторых, по умолчанию Unity генерирует машинный код для архитектур ARMv7 и x86 с IL2CPP.Поскольку IL2CPP должен генерировать этот код заранее, все проблемы с большим кодом, упомянутые в первом пункте, дублируются.Например, если вам не нужна поддержка x86, вы можете изменить настройки проигрывателя, чтобы избежать его сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...