Version: 5.6
Midiendo el Rendimiento con el Perfilador (Profiler) Integrado
Optimizando el rendimiento de físicas

Optimizando el tamaño del reproductor iOS integrado

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.

Construyendo para distribución

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).

Nivel de stripping de iOS

Las optimizaciones de tamaño activadas por stripping funcionan de la siguiente manera:

  1. 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.

  2. 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.

  3. 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.

Stripping con IL2CPP

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.

Lista de verificación simple para hacer que su distribución sea lo más pequeña posible

  1. Minimiza sus assets: Activa la compresión PVRTC para texturas y reduce su resolución lo más lejos posible. También, minimiza el número de sonidos no comprimidos. Hay unas recomendaciones adicionales para la reducción del tamaño de archivo aquí.
  2. Configure el nivel de Stripping iOS a Use micro mscorlib.
  3. Configure el nivel de la llamada script de optimización a Fast but no exceptions.
  4. No utilice nada que viva en System.dll o System.Xml.dll en su código. Estas librerías no son compatibles con micro mscorlib.
  5. Quite dependencias de código innecesarias.
  6. Configure el nivel de Compatibilidad de API a .Net 2.0 subset. Tenga en cuenta que el .Net 2.0 subset tiene una compatibilidad limitada con otras librerías.
  7. No utilice Arrays JS.
  8. Evite contenedores genéricos en combinación con tipos de valor, incluyendo structs.

Qué tan pequeña puede ser una app hecha en Unity?

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).

Por qué mi app aumento en tamaño después de ser publicada a la App Store?

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.


Midiendo el Rendimiento con el Perfilador (Profiler) Integrado
Optimizando el rendimiento de físicas