Perché Apple consente solo i frame statici su iOS?


11

Chiaramente Apple ha la possibilità di creare librerie caricate dinamicamente (note come framework) per iOS, poiché ne vengono fornite diverse con XCode (come UIKit). Gli sviluppatori di app hanno solo la possibilità di creare librerie statiche o, nella migliore delle ipotesi, indurre Xcode a pensare che stia caricando un framework quando sta effettivamente caricando una libreria statica, questo è noto come la creazione di un framework falso, alcune delle comodità del trascinamento della selezione, ma nessuno dei vantaggi del caricamento dinamico.

Qual è il ragionamento di Apple per mantenere i framework dinamici dagli sviluppatori di app? Sembra che faciliterebbe considerevolmente l'uso di librerie esterne, dal momento che gli sviluppatori non dovrebbero fare affidamento su flag di linker difficili o catene di dipendenza di librerie open source.

Vedo un motivo comune è la sicurezza. Perché quindi Apple lo consente su OSX e non su iOS? La sicurezza non è un requisito anche lì?

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

Risposte:


17

Uno dei criteri di Apple per l'accettazione di un programma è se effettua o meno chiamate a API Apple non supportate (o altre cose cattive). Richiedendo il collegamento statico, possono provare che il software non effettua tali chiamate. Consentire il collegamento dinamico consentirebbe di aggiungere qualsiasi tipo di comportamento in un secondo momento, il che praticamente invalida il processo di approvazione.

Apple consente il collegamento dinamico in OSX perché, beh, i Macintoshes sono computer reali, non dispositivi tablet, e gli utenti dei computer reali si aspettano che siano programmabili in questo modo. Il mercato dei tablet e dei telefoni è abbastanza 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, tra cui la scrittura di programmi che fanno ciò che vogliono, come vogliono. Questa non è mai stata l'aspettativa dei dispositivi tablet, che sono dispositivi di consumo.

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


7
Nota: Apple ha ora consentito i framework dinamici su iOS a partire da iOS 8.
Joel Fischer,

@Robert Harvey grazie per la spiegazione, ma da iOS 8, sono aperti all'uso di framework dinamici. consentirà agli hacker di influenzare iOS / App? hai idea di come Apple abbia reso i framework dinamici aperti agli sviluppatori, ma impedendone l'hacker. Grazie!
Vijay-Apple-Dev.blogspot.com

8

Il motivo è la sicurezza, come menzionato in questa domanda Stack Overflow :

Il motivo è la sicurezza: poiché una libreria dinamica può essere caricata e scaricata in fase di esecuzione è possibile scaricare un codice eseguibile aggiuntivo e caricarlo (si pensi al plug-in). Ciò potrebbe essere compromesso da un hacker e quindi l'esecuzione di codice dannoso sul telefono è una cosa molto brutta. Ciò consentirebbe anche di aggiungere funzionalità non approvate a un'app approvata. In breve: in questo ambiente, Apple considera il collegamento dinamico come una scatola Pandora che deve essere rigorosamente controllata, altrimenti potrebbe compromettere la sicurezza e sono d'accordo sul fatto che abbia senso al telefono.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.