xcode - Enlace binario con bibliotecas VS incrustar marcos
frameworks (3)
¿Cuál es la diferencia en las fases de compilación entre poner un marco en "Enlace binario con bibliotecas" o en "Incrustar marcos"?
He estado buscando algunas respuestas aquí y allá y me gustaría enmendar este aprendizaje si alguien vuelve a encontrar esta pregunta.
En cualquier caso, si queremos utilizar alguno de los recursos de framework (es decir, la API), debemos vincularlo. En ese caso, debemos agregarlo en la sección "Marcos y bibliotecas vinculadas" en la parte inferior de la Configuración de destino general.
Si incorporamos una biblioteca, la enviaremos, tal como está, con nuestro paquete de aplicaciones. Esto podría ser útil, por ejemplo, en máquinas que ejecutan macOS que ciertamente no tienen una biblioteca de terceros específica.
Entonces, ¿qué pasa con iOS? No hay posibilidad de instalar bibliotecas de terceros en un dispositivo iOS por sí mismo, además, Apple es muy estricto con respecto a los marcos fat (bibliotecas creadas para múltiples plataformas). Entonces, ¿tiene que haber una forma de entregar las bibliotecas de todos modos? Dado que solo vincularlos no es suficiente para el usuario de nuestra aplicación, ¿qué otras posibilidades tenemos?
Ahí es donde entra en juego una peculiar fase de construcción. En la configuración del proyecto en Fases de compilación está el enlace binario con la sección de bibliotecas. Este paso elimina las partes innecesarias de los marcos de trabajo y deja las partes necesarias con el paquete para que pueda ejecutarse en un dispositivo que sea independiente de las dependencias de la aplicación.
Para un objetivo de aplicación
-
Static Library
-Link
-
Static Framework
-Link
-
Dynamic Framework
:Embed
Cómo funciona
Enlace binario con bibliotecas Enlace marcos y bibliotecas con los archivos de objetos de su proyecto para producir un archivo binario. Puede vincular los archivos de origen de un objetivo con bibliotecas en el SDK activo del objetivo o con bibliotecas externas.
Marcos incrustados Puede crear un marco incrustado para compartir código entre la extensión de su aplicación y la aplicación que lo contiene.
-
Línea de tiempo (Mire esta oración) - "Si su objetivo de aplicación contiene enlaces a un marco incrustado , debe incluir la arquitectura arm64 o será rechazado por la App Store".