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.
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).
Activate the size optimizations for Mono scripting backend builds by stripping work in the following way:
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.
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.
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.
2018–06–14 Page amended with limited editorial review
2017–14–06 - Upated Stripping with IL2CPP section