Version: 2017.4
Measuring performance with the built-in profiler
Optimizando el rendimiento de físicas

Optimizing the size of the built iOS Player

The two main ways of reducing the size of the Player are by making a proper Release build within Xcode and by changing the Stripping Level within Unity.

Construyendo para distribución

It is expected that final release builds are made using the Xcode command Product > Archive. Using this command ensures that build is made with release configuration and all the debug symbols are stripped. After issuing this command, Xcode switches to the Organizer window Archives tab (you can navigate there manually via Window > Organizer menu). For guidelines on how to calculate app size and other size-reducing tips, see Apple’s Technical Q&A on Reducing the size of my App.

Note: We recommend you have some small extra margin for error when aiming for an over-the-air download limit (which currently is 150MB).

Nivel de stripping de iOS

Activate the size optimizations for Mono scripting backend builds by stripping work in the following way:

  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

Consulte la documentación sobre [eliminación de códigos de bytes gestionados con IL2CPP](IL2CPP-BytecodeStripping para obtener más información.

Note: Tt can sometimes be difficult to determine which classes are getting stripped in error even though the application requires them. You can often get useful information about this by running the stripped application on the simulator and checking the Xcode console for error messages.

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

  1. Minimize your assets: enable compression for textures and reduce their resolution as far as possible. Also, minimize the number of uncompressed sounds. There are some additional tips for file size reduction here.
  2. On Mono, set the iOS Stripping Level to Use micro mscorlib, or on IL2CPP enable Strip Engine Code.
  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. 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.


  • 2018–06–14 Page amended with limited editorial review

  • 2017–14–06 - Upated Stripping with IL2CPP section

Measuring performance with the built-in profiler
Optimizando el rendimiento de físicas