Чому Apple допускає лише статичні рамки на iOS?


11

Очевидно, що Apple має можливість створювати динамічно завантажені бібліотеки (відомі як фреймворки) для iOS, оскільки вони постачають декілька з XCode (наприклад, UIKit). Розробники додатків мають лише можливість створювати статичні бібліотеки або, в кращому випадку, наводити Xcode на думку про завантаження рамки, коли вона фактично завантажує статичну бібліотеку, це відомо як створення підробленої рамки, деякої зручності перетягування, але жодна з переваг динамічного завантаження.

Які міркування Apple утримувати динамічні рамки від розробників додатків? Схоже, було б значно полегшити використання зовнішніх бібліотек, оскільки розробникам не доведеться покладатися на вигадливі прапори лінкерів або ланцюги залежностей бібліотек з відкритим кодом.

Я бачу, загальною причиною є безпека. Чому тоді Apple дозволяє це на OSX, а не на iOS? Чи не є також вимогою безпеки?

EDIT: Це вже не актуально для iOS 8. Apple додала підтримку динамічних рамок.

Відповіді:


17

Одним із критеріїв Apple щодо прийняття програми є те, чи робить він дзвінки на непідтримувані Apple API (чи інші погані речі). Вимагаючи статичного зв’язку, вони можуть довести, що програмне забезпечення не здійснює таких дзвінків. Дозвіл динамічного зв’язку дозволить додати будь-який тип поведінки пізніше, що значною мірою скасовує процес затвердження.

Apple дозволяє динамічне посилання в OSX, оскільки, ну, Macintoshes - це справжні комп’ютери, а не планшетні пристрої, і користувачі реальних комп'ютерів очікують, що вони можуть програмуватися таким чином. Ринок планшетів та телефонів сильно відрізняється від ринку настільних та портативних комп'ютерів. Комп'ютери - це виробничі пристрої; користувачі очікують, що зможуть виробляти на них продукти, включаючи написання програм, які роблять те, що хочуть, як хочуть. Це ніколи не було очікуванням планшетних пристроїв, які є пристроями споживання.

Весь сенс планшетів і Apple Store полягав у створенні закритого середовища для захисту споживачів від пішохідних вірусів тощо (ну і дозволити Apple зібрати 30% усіх продажів програмного забезпечення, здійснених через їхній магазин).


7
Примітка: Apple тепер дозволила динамічні рамки для iOS станом на iOS 8.
Joel Fischer

@Robert Harvey дякую за пояснення, але з iOS 8 вони відкриті для використання динамічних рамок. чи дозволить хакерам впливати на iOS / додаток? Ви маєте будь-яку ідею, як Apple зробила динамічні рамки відкритими для розробників, але заважаючи хакеру від цього. Дякую!
Vijay-Apple-Dev.blogspot.com

8

Причина - безпека, про яку йдеться у цьому питанні щодо переповнення стека :

Причина - безпека: оскільки динамічну бібліотеку можна завантажувати та вивантажувати під час виконання, ви можете завантажити додатковий виконуваний код і завантажити його (думаю, плагін). Це може зламатися хакером, і тоді зловмисний код виконувати на вашому телефоні - це дуже погано. Це також дозволить додати не затверджені функції до затвердженого додатка. Коротше кажучи: в цьому середовищі Apple розглядає динамічне посилання як коробку Пандораса, яку слід суворо контролювати, інакше це може загрожувати безпеці, і я погоджуюся, що це має сенс у телефоні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.