Las dos manera principales de reducir el tamaño del reproductor son hacer un adecuado Release build dentro de Xcode y cambiando el Stripping Level dentro de Unity.
Se espera que las compilaciones de la versión final se realicen utilizando el comando Xcode 4.x / 5.x Product -> Archive. El uso de este comando asegura que la compilación se realiza con la configuración de lanzamiento y todos los símbolos de depuración se eliminan. Después de ejecutar este comando, el último Xcode cambia a la pestaña Archives de la ventana Organizador (puede navegar manualmente a través del menú Window -> Organizer). Encontrará allí dos funciones muy útiles: App Store size estimation y Distribution. La función del tamaño estimado de construcción funciona bastante bien, pero siempre es recomendado tener un margen pequeño extra de error cuando apunte por un limite de descarge 3G (que actualmente es 100MB).
Las optimizaciones de tamaño activadas por stripping funcionan de la siguiente manera:
El nivel de Strip assemblies: el bytecode del script es analizado para que las clases y métodos que no están referenciados de los scripts sean eliminados del DLLs y por lo tanto excluidos de la fase de compilación AOT. Esta optimización reduce el tamaño del binario principal y DLLs de acompañamiento y es seguro siempre que ninguna reflexión sea utilizada.
El nivel de Strip ByteCode: cualquier archivo DLL de .NET (almacenado en la carpeta de datos) se eliminan sólo en los metadatos. Esto es posible porque todo el código ya está precompilado durante la fase AOT y enlazado en el binario principal.
El nivel de Use micro mscorlib: una versión especial, y más pequeña de mscorlib es utilizada. Algunos componentes son eliminados de esta librería, por ejemplo, Security, Reflection.Emit, Remoting, ningún calendario Gregoriano, etc. También, las interdependencias entre los componentes internos son minimizados. Esta optimización reduce el binario principal y tamaño mscorlib.dll pero no es compatible con alguna clase de assembly System y System.Xml, entonces úselo con cuidado.
Esto niveles son acumulativos, entonces el nivel 3 de optimización implícitamente incluye los niveles 2 y 1, mientras que el nivel 2 de optimización incluye el nivel 1.
Tenga en cuenta que Micro mscorlib es una versión altamente stripped de la librería core. Solamente esos elementos que son requeridos por el tiempo de ejecución de Mono en Unity se mantienen. Las mejores prácticas de utilizar un micro mscrolib es no utilizar cualquiera de las clases u otras características de .NET que no son requeridas por su aplicación. Los GUIDs son un buen ejemplo de algo que usted puede omitir; ellas pueden ser fácilmente remplazadas con un pseudo GUIDs hecho de manera personalizada y haciendo esto va a resultar en un mejor rendimiento y tamaño de app.
Refer to documentaiton on managed bytecode stripping with IL2CPP for more information
Note: a veces puede ser difícil determinar qué clases están siendo stripped en error incluso si la aplicación las requiere. A veces usted pueden obtener información útil acerca de esto ejecutando la aplicación stripped en el simulador y revisando la consola de Xcode por mensajes de error.
Un proyecto vacío va a tomar menos de 22 MB en la App Store si todas las optimizaciones de tamaño están apagadas. Con el stripping de código, la escena vacía con la cámara principal puede reducirse a menos de 12 MB en la App Store (zipped y adjunto un DRM).
Cuando publique su aplicación, el servicio de la App Store de Apple primero encripta el archivo binario y luego lo comprime vía zip. La Encriptación aumenta lo ’‘randomness’ del segmento del código y por lo tanto lo hace peor para la compresión. Revise el capítulo “Building for distribution” de arriba para saber cómo estimar el tamaño de la App Store antes de la publicación.
2017–14–06 Page amended with no editorial review - Leave page feedback
2017–14–06 - Upated Stripping with IL2CPP section