Perché Apple consente solo i framework statici su iOS?

11

Chiaramente Apple ha la capacità di creare librerie caricate dinamicamente (conosciute come framework) per iOS, dato che ne spediscono molte con XCode (come UIKit). Gli sviluppatori di app hanno solo la possibilità di creare librerie statiche o, nel migliore dei casi, ingannare Xcode pensando che stia caricando un framework quando in realtà sta caricando una libreria statica, questo è noto come creazione di un framework finto, parte della praticità del trascinamento della selezione, ma nessuno dei vantaggi di caricamento dinamico.

Qual è il ragionamento di Apple per mantenere i framework dinamici dagli sviluppatori di app? Sembra che faciliterebbe l'utilizzo di librerie esterne in modo considerevole, dal momento che gli sviluppatori non dovevano fare affidamento su limitatissimi linker flag o catene di dipendenza della libreria open-source.

Vedo che una ragione comune è la sicurezza. Perché allora Apple lo consente su OSX e non su iOS? Anche la sicurezza non è un requisito?

EDIT: questo non è più rilevante a partire da iOS 8. Apple ha aggiunto il supporto per i framework dinamici.

    
posta Joel Fischer 31.01.2014 - 22:17
fonte

2 risposte

17

Uno dei criteri di Apple per accettare un programma è se fa o meno chiamate ad API Apple non supportate (o ad altre cose cattive). Richiedendo il collegamento statico, possono provare che il software non effettua tali chiamate. Consentire collegamenti dinamici consentirebbe qualsiasi tipo di comportamento da aggiungere in seguito, il che praticamente invalida il loro processo di approvazione.

Apple consente il collegamento dinamico in OSX perché, beh, i Macintosh sono computer reali, non dispositivi tablet e gli utenti di computer reali si aspettano che siano programmabili in questo modo. Il mercato dei tablet e dei telefoni è molto diverso da quello dei computer desktop e laptop. I computer sono dispositivi di produzione; gli utenti si aspettano di essere in grado di produrre prodotti su di essi, inclusi programmi di scrittura che fanno ciò che vogliono, come vogliono. Questa non è mai stata l'aspettativa dei dispositivi tablet, che sono dispositivi di consumo

L'intero punto dei tablet e dell'Apple Store era creare un ambiente chiuso per proteggere i consumatori dai virus pedonali e simili (beh, e consentire a Apple di raccogliere il 30% di tutte le vendite di software effettuate attraverso il loro negozio).

    
risposta data 31.01.2014 - 22:30
fonte
8

Il motivo è la sicurezza come menzionato in questo Domanda di overflow dello stack :

The reason is security: since a dynamic library can be loaded and unloaded at runtime you could download additional executable code and load it (think plug-in). This could get compromised by a hacker and then having malicious code executing on your phone is a very bad thing. It would also make it possible to add unapproved features to an approved app. In short: in this environment, Apple considers dynamic linking to be a Pandoras box that must be strictly controlled, otherwise it could compromise security and I agree that it does make sense on the phone.

    
risposta data 31.01.2014 - 22:28
fonte

Leggi altre domande sui tag