Organización de las notas de optimización del tamaño del paquete de la aplicación iOS

Este es el día 21 de mi participación en el Desafío Gengwen Para obtener detalles del evento, consulte: Desafío Gengwen

Optimización del tamaño del paquete de la aplicación iOS

  1. Adelgazamiento de aplicaciones
  2. Eliminación de recursos de imágenes inútiles y compresión de recursos de imágenes existentes
  3. Optimización de código
  4. especificación

Adelgazamiento oficial de aplicaciones

App Thinning es una 节省 iOS 设备存储空间función que permite que App Store y el sistema operativo reduzcan el tamaño del paquete de instalación tanto como sea posible a través de una serie de optimizaciones al instalar, actualizar y ejecutar aplicaciones de iOS o watchOS, y solo descargar los recursos necesarios, reducir el espacio que ocupa la App, ahorrando así el espacio de almacenamiento del dispositivo. Este proceso incluye tres procesos: corte, código de bits y recursos bajo demanda.

Hay tres formas de adelgazamiento de aplicaciones, que incluyen: App Slicing , Bitcode , On-Demand Resources .

  1. App Slicing, después de cargar la aplicación en iTunes Connect, corta la aplicación y crea diferentes variantes, para que pueda aplicarse a diferentes dispositivos.

  2. Recursos bajo demanda, principalmente para escenarios de juegos de varios niveles. Descargará los recursos de los niveles posteriores de acuerdo con el progreso del nivel del usuario, y también se eliminarán los recursos que hayan pasado el nivel, lo que puede reducir el tamaño del paquete de la aplicación instalada inicialmente.

  3. Bitcode, que está optimizado para el tamaño del paquete para dispositivos específicos, y la optimización no es obvia.

    Después de habilitar la compilación de Bitcode, los desarrolladores solo necesitan cargar la representación intermedia (middleware) al cargar la aplicación, en lugar del archivo binario ejecutable final. Antes de que el usuario descargue la aplicación, AppStore compilará automáticamente el middleware y generará el archivo ejecutable requerido por el dispositivo para que el usuario lo descargue e instale. Es decir, cuando enviamos el programa a la App Store, Xcode compilará el programa en una representación intermedia (código de bits). La tienda de aplicaciones luego compilará el Bitcode en un programa ejecutable de 64 o 32 bits. Apple generará un binario con solo el conjunto de instrucciones de acuerdo con el tipo de conjunto de instrucciones del teléfono móvil del usuario que descarga la aplicación y lo entregará. Para lograr el propósito de reducir el tamaño del paquete de instalación.

    Atención de código de bits

    1. Xcode 7 habilita Bitcode de forma predeterminada. Si la aplicación habilita Bitcode, otras bibliotecas integradas de terceros también deben ser paquetes compilados con Bitcode antes de que se pueda realizar la compilación de Bitcode.
    2. Después de habilitar la compilación de Bitcode, el tamaño de la aplicación generada por la compilación aumentará (el código intermedio, no el paquete descargado por el usuario), y el archivo .dSYM no se puede usar para simbolizar el registro de errores (el paquete descargado por el usuario se genera recompilando el servicio de Apple, se generan nuevos archivos de símbolos)
    3. Cargue el paquete AppStore a través de Archivo, puede descargar el nuevo archivo de símbolos correspondiente al paquete de instalación en la herramienta Organizador de Xcode

imagen

Recursos de imagen inútiles

Cuando se piensa en optimizar el tamaño del paquete, lo primero que se viene a la mente es la eliminación de recursos inútiles, y lo segundo es la compresión de calidad de las imágenes, algo tan difícil como el código se debe tratar al final.

  1. Eliminar recursos inútiles
  2. Comprimir recursos de imagen

El proceso de eliminación de imágenes inútiles se puede resumir en los siguientes seis pasos.

  1. Obtenga todos los archivos de recursos en el paquete de instalación de la aplicación mediante el comando de búsqueda, como find /Users/daiming/Project/ -name.
  2. Establezca el tipo de recursos utilizados, como jpg, gif, png, webp.
  3. Utilice coincidencias regulares para encontrar el nombre del recurso utilizado en el código fuente, como patrón = @"@"(.+?)"".
  4. 对于按照规则设置的资源名,我们需要在匹配使用资源的正则表达式里添加相应的规则,比如 @“image_%d”。
  5. 确认无用资源后,就可以对这些无用资源执行删除操作了。这个删除操作,你可以使用 NSFileManger 系统类提供的功能来完成。

这里推荐一个非常好用的工具;LSUnusedResources

imagen

图片资源压缩

如果图片大小超过了100KB,你可以考虑使用 WebP;而小于100KB时,你可以使用网页工具 TinyPng或者GUI工具ImageOptim进行图片压缩。

无用代码的清理

一般的无用代码筛查方式可以分为动态和静态两种方式。静态的方式主要是通过代码扫描、参与编译构建过程或者分析最终产物来确认哪些代码没有被用到。而动态的方式主要是靠插桩或者运行时信息来获取哪些代码没有执行。由于 Objc 强大的动态特性,我们在样本量足够大的场景使用动态方式会比静态方式准确率高很多。

静态筛查筛查方案:

比较简单的方式是:基于 otool dump 最终产物中的 __objc_class_list & __objc_class_refs 做差集找到未使用的 Objc 类。

如果代码采用 C 、C++ 等静态语言编写代码时,编译期已经确定了基本的代码逻辑,所以编译器会帮助我们将没有使用到的代码标记为 Dead code 最终不会打包到安装包中。

动态筛查方案:

  1. 基于插桩的行级别代码覆盖率:

  2. 基于 Runtime 的轻量级运行时「类覆盖率」方案:

这部分重点参考下:抖音品质建设 – iOS 安装包大小优化实践篇

戴铭 10 | 包大小:如何从资源和代码层面实现全方位瘦身?

参考:

www.wenjiangs.com/article/ios…

www.6hu.cc/archives/10…

www.6hu.cc/archives/10…

referencia:

www.jianshu.com/p/bb36b9455…

¿Qué es el adelgazamiento de aplicaciones? (iOS, tvOS, watchOS) Recursos bajo demanda Esenciales Adelgazamiento de aplicaciones

www.cnblogs.com/dins/p/1236…

Supongo que te gusta

Origin juejin.im/post/6976589825126170660
Recomendado
Clasificación