На самом деле не совсем верно, что iPhone не поддерживает динамическое связывание. Что правда, так это то, что приложения, установленные в App Store, не могут динамически связываться.
Магазин приложений / ituned устанавливает программы в каталог /private/var/mobile/.... Любая открытая программа, находящаяся в этом подкаталоге, chroot и лишена определенных прав при открытии. Процессы с chroot не могут разветвляться, они не могут работать в фоновом режиме, они не могут загружать динамические библиотеки и не могут сохранять файлы за пределами своих небольших защищенных областей диска (за исключением фотографий в каталоге фотографий). ).
Тем не менее, iPhone работает под управлением современной операционной системы, которая прекрасно поддерживает динамическую компоновку. Акт «взлома» на самом деле представляет собой установку программы за пределами chroot-тюрьмы, которая затем может делать такие вещи, как разветвление и сохранение файлов в других местах на диске и загрузка динамического кода.
Apple (и открытое сообщество iPhone) имеет множество программ, работающих на телефоне (например, приложения MobilePhone, Mobile Safari и SpringBoard), которые могут работать в фоновом режиме и загружать библиотеки. Они размещаются в другом месте на диске (часто /private/var/stash/Applications).
Итак... если вы хотите продавать свое приложение в магазине приложений, вы не можете загружать динамическую библиотеку. Что для большинства людей означает, что вы вообще не можете его загрузить. Но если вы хотите распространять свое приложение через cydia (распространенный установщик приложений для телефона с джейлбрейком), то вы можете обойтись без джейлбрейка телефона и загрузки динамической библиотеки. Фактически, из-за того, что процесс установки itunes является виновником, как вы узнали, вы даже не можете загрузить dylib из своего собственного приложения, которое вы пишете на свой телефон... если только вы не сделаете джейлбрейк.
person
Aftermathew
schedule
21.02.2009