¿Por qué Apple solo permite marcos estáticos en iOS?

11

Claramente, Apple tiene la capacidad de crear bibliotecas cargadas dinámicamente (conocidas como frameworks) para iOS, ya que envían varias con XCode (como UIKit). Los desarrolladores de aplicaciones solo tienen la capacidad de crear bibliotecas estáticas, o en el mejor de los casos, engañar a Xcode para que piense que está cargando un marco cuando en realidad está cargando una biblioteca estática, esto se conoce como crear un marco falso, algo de la conveniencia de arrastrar y soltar, pero ninguno de los beneficios de carga dinámica.

¿Cuál es el razonamiento de Apple para mantener los marcos dinámicos de los desarrolladores de aplicaciones? Parece que facilitaría el uso de bibliotecas externas considerablemente, ya que los desarrolladores no tendrían que depender de indicadores de enlaces delicados o cadenas de dependencias de bibliotecas de código abierto.

Veo una razón común es la seguridad. ¿Por qué entonces Apple lo permite en OSX y no en iOS? ¿No es la seguridad un requisito allí también?

EDITAR: Esto ya no es relevante a partir de iOS 8. Apple ha agregado soporte para marcos dinámicos.

Joel Fischer
fuente

Respuestas:

17

Uno de los criterios de Apple para aceptar un programa es si realiza o no llamadas a API de Apple no compatibles (u otras cosas malas). Al requerir la vinculación estática, pueden demostrar que el software no realiza tales llamadas. Permitir la vinculación dinámica permitiría agregar cualquier tipo de comportamiento más adelante, lo que prácticamente invalida su proceso de aprobación.

Apple permite la vinculación dinámica en OSX porque, bueno, los Macintosh son computadoras reales, no tabletas, y los usuarios de computadoras reales esperan que sean programables de esta manera. El mercado de tabletas y teléfonos es bastante diferente al de las computadoras de escritorio y portátiles. Las computadoras son dispositivos de producción; los usuarios esperan poder producir productos en ellos, incluidos los programas de escritura que hacen lo que quieren, cómo quieren. Esta nunca fue la expectativa de los dispositivos de tableta, que son dispositivos de consumo.

El objetivo de las tabletas y la Apple Store era crear un entorno cerrado para proteger a los consumidores de los virus peatonales y similares (bueno, y permitir que Apple recolecte el 30% de todas las ventas de software realizadas a través de su tienda).

Robert Harvey
fuente
77
Nota: Apple ahora ha permitido marcos dinámicos en iOS a partir de iOS 8.
Joel Fischer
@Robert Harvey, gracias por la explicación, pero desde iOS 8, están abiertos a usar marcos dinámicos. ¿permitirá que los hackers afecten a iOS / App? ¿Tienes alguna idea de cómo Apple creó marcos dinámicos tan abiertos para los desarrolladores, pero evitando que el hacker lo haga? ¡Gracias!
Vijay-Apple-Dev.blogspot.com
8

La razón es la seguridad como se menciona en esta pregunta de desbordamiento de pila :

La razón es la seguridad: dado que una biblioteca dinámica se puede cargar y descargar en tiempo de ejecución, puede descargar código ejecutable adicional y cargarlo (piense en el complemento). Esto podría verse comprometido por un hacker y luego tener código malicioso ejecutándose en su teléfono es algo muy malo. También permitiría agregar funciones no aprobadas a una aplicación aprobada. En resumen: en este entorno, Apple considera que la vinculación dinámica es una caja de Pandoras que debe controlarse estrictamente, de lo contrario podría comprometer la seguridad y estoy de acuerdo en que tiene sentido en el teléfono.

Ingeniero mundial
fuente