Pourquoi Apple autorise-t-il uniquement les cadres statiques sur iOS?

11

Il est clair qu'Apple a la possibilité de créer des bibliothèques chargées dynamiquement (connues sous le nom de frameworks) pour iOS, car elles en expédient plusieurs avec XCode (comme UIKit). Les développeurs d'applications ont uniquement la possibilité de créer des bibliothèques statiques, ou au mieux, de faire croire à Xcode qu'il charge un framework alors qu'il charge réellement une bibliothèque statique, c'est ce qu'on appelle la création d'un faux framework, une partie de la commodité du glisser-déposer, mais aucun des avantages du chargement dynamique.

Quel est le raisonnement d'Apple pour conserver les cadres dynamiques des développeurs d'applications? Il semblerait que cela faciliterait considérablement l'utilisation des bibliothèques externes, car les développeurs n'auraient pas à s'appuyer sur des indicateurs de liens pointilleux ou des chaînes de dépendance de bibliothèque open source.

Je vois une raison commune est la sécurité. Pourquoi Apple l'autorise-t-il sur OSX et non sur iOS? La sécurité n'est-elle pas également une exigence?

EDIT: Cela n'est plus pertinent depuis iOS 8. Apple a ajouté la prise en charge des cadres dynamiques.

Joel Fischer
la source

Réponses:

17

L'un des critères d'Apple pour accepter un programme est de savoir s'il effectue ou non des appels vers des API Apple non prises en charge (ou d'autres mauvaises choses). En exigeant une liaison statique, ils peuvent prouver que le logiciel ne fait pas de tels appels. Autoriser la liaison dynamique permettrait d'ajouter tout type de comportement ultérieurement, ce qui invaliderait à peu près leur processus d'approbation.

Apple permet la liaison dynamique dans OSX car, eh bien, les Macintoshes sont de vrais ordinateurs, pas des tablettes, et les utilisateurs de vrais ordinateurs s'attendent à ce qu'ils soient programmables de cette façon. Le marché des tablettes et des téléphones est très différent de celui des ordinateurs de bureau et portables. Les ordinateurs sont des appareils de production; les utilisateurs s'attendent à pouvoir produire des produits sur eux, y compris des programmes d'écriture qui font ce qu'ils veulent, comment ils veulent. Cela n'a jamais été attendu des tablettes, qui sont des appareils de consommation.

L'intérêt des tablettes et de l'Apple Store était de créer un environnement fermé pour protéger les consommateurs contre les virus piétons, etc. (enfin, et pour permettre à Apple de collecter 30% de toutes les ventes de logiciels effectuées via leur boutique).

Robert Harvey
la source
7
Remarque: Apple a désormais autorisé les cadres dynamiques sur iOS à partir d'iOS 8.
Joel Fischer
@Robert Harvey merci pour l'explication, mais à partir d'iOS 8, ils sont ouverts à l'utilisation de frameworks dynamiques. cela permettra-t-il aux pirates d'affecter iOS / App? avez-vous une idée de la façon dont Apple a rendu les cadres dynamiques ouverts aux développeurs, mais en empêche le pirate. Merci!
Vijay-Apple-Dev.blogspot.com
8

La raison en est la sécurité, comme mentionné dans cette question sur le débordement de pile :

La raison est la sécurité: puisqu'une bibliothèque dynamique peut être chargée et déchargée au moment de l'exécution, vous pouvez télécharger du code exécutable supplémentaire et le charger (pensez au plug-in). Cela pourrait être compromis par un pirate informatique, puis l'exécution de code malveillant sur votre téléphone est une très mauvaise chose. Cela permettrait également d'ajouter des fonctionnalités non approuvées à une application approuvée. En bref: dans cet environnement, Apple considère la liaison dynamique comme une boîte Pandoras qui doit être strictement contrôlée, sinon cela pourrait compromettre la sécurité et je conviens que cela a du sens au téléphone.

Ingénieur du monde
la source