На самом деле и технически, да, вы можете, но не так, как вы могли подумать.
Если он пришел из Android, он, вероятно, скомпилирован для ARM. Таким образом, он должен быть двоично-совместим с процессором ARM в устройствах iOS. Однако iOS использует не обычный формат общих объектов (то есть формат ELF), а собственный формат Mach-O iOS и OS X.
Это означает, что вы не можете напрямую ссылаться на этот общий объектный файл и не можете передать его напрямую dlopen()
и dlsym()
. Вы должны серьезно заняться взломом (то, чего вы, вероятно, не знаете). Это включает в себя загрузку и перемещение файла должным образом.
Пример этого можно найти у разработчика джейлбрейка iOS и хакера, репозитория Comex на GitHub Frash, Flash-плеер для взломанных iOS-устройств. По сути, Comex написала модуль загрузчика ELF (названный «еда») для iOS и использовала его, чтобы заставить libflashplayer.so Android работать на iOS. Довольно аккуратно, да?
Также обратите внимание, что это невозможно для приложений AppStore, поскольку для этого требуется динамическая загрузка и различные изменения в ОС.
person
Community
schedule
28.11.2012