Warum erlaubt Apple nur statische Frameworks unter iOS?

11

Apple hat eindeutig die Möglichkeit, dynamisch geladene Bibliotheken (sogenannte Frameworks) für iOS zu erstellen, da diese mit XCode (wie UIKit) ausgeliefert werden. App-Entwickler können nur statische Bibliotheken erstellen oder Xcode bestenfalls dazu verleiten, zu glauben, dass ein Framework geladen wird, wenn tatsächlich eine statische Bibliothek geladen wird. Dies wird als Erstellen eines gefälschten Frameworks bezeichnet. aber keiner der dynamischen Ladevorteile.

Was ist Apples Argument dafür, dynamische Frameworks von App-Entwicklern fernzuhalten? Es scheint, als würde es die Verwendung externer Bibliotheken erheblich vereinfachen, da Entwickler sich nicht auf knifflige Linker-Flags oder Open-Source-Bibliotheksabhängigkeitsketten verlassen müssten.

Ich sehe einen häufigen Grund in der Sicherheit. Warum erlaubt Apple es dann unter OSX und nicht unter iOS? Ist Sicherheit dort nicht auch eine Voraussetzung?

BEARBEITEN: Dies ist ab iOS 8 nicht mehr relevant. Apple hat Unterstützung für dynamische Frameworks hinzugefügt.

Joel Fischer
quelle

Antworten:

17

Eines der Kriterien von Apple für die Annahme eines Programms ist, ob nicht unterstützte Apple-APIs (oder andere schlechte Dinge) aufgerufen werden. Durch die Anforderung einer statischen Verknüpfung können sie nachweisen, dass die Software solche Anrufe nicht tätigt. Wenn Sie eine dynamische Verknüpfung zulassen, können Sie später jede Art von Verhalten hinzufügen, wodurch der Genehmigungsprozess so gut wie ungültig wird.

Apple erlaubt die dynamische Verknüpfung in OSX, da Macintosh-Computer echte Computer und keine Tablet-Geräte sind und die Benutzer realer Computer erwarten, dass sie auf diese Weise programmierbar sind. Der Markt für Tablets und Telefone unterscheidet sich erheblich von dem für Desktop- und Laptop-Computer. Computer sind Produktionsgeräte; Benutzer erwarten, dass sie Produkte darauf produzieren können, einschließlich des Schreibens von Programmen, die das tun, was sie wollen, wie sie wollen. Dies war nie die Erwartung von Tablet-Geräten, die Verbrauchsgeräte sind.

Bei Tablets und dem Apple Store ging es darum, eine geschlossene Umgebung zu schaffen, um die Verbraucher vor Fußgängerviren und dergleichen zu schützen (und Apple die Möglichkeit zu geben, 30% aller über ihren Store getätigten Softwareverkäufe zu sammeln).

Robert Harvey
quelle
7
Hinweis: Apple hat ab iOS 8 dynamische Frameworks für iOS zugelassen.
Joel Fischer
@ Robert Harvey bedankt sich für die Erklärung, aber ab iOS 8 können sie dynamische Frameworks verwenden. Können Hacker das iOS / die App beeinflussen? Haben Sie eine Idee, wie Apple dynamische Frameworks für Entwickler offen gemacht hat, aber den Hacker daran gehindert hat? Vielen Dank!
Vijay-Apple-Dev.blogspot.com
8

Der Grund ist die Sicherheit, wie in dieser Frage zum Stapelüberlauf erwähnt :

Der Grund ist die Sicherheit: Da eine dynamische Bibliothek zur Laufzeit geladen und entladen werden kann, können Sie zusätzlichen ausführbaren Code herunterladen und laden (siehe Plug-In). Dies könnte von einem Hacker kompromittiert werden, und dann ist es eine sehr schlechte Sache, wenn bösartiger Code auf Ihrem Telefon ausgeführt wird. Es würde auch ermöglichen, einer genehmigten App nicht genehmigte Funktionen hinzuzufügen. Kurz gesagt: In dieser Umgebung betrachtet Apple die dynamische Verknüpfung als eine Pandoras-Box, die streng kontrolliert werden muss, da sie sonst die Sicherheit gefährden könnte, und ich stimme zu, dass dies auf dem Telefon sinnvoll ist.

Weltingenieur
quelle