Это первый раз, когда я спрашиваю о stackoverflow, и я в отчаянии.
Моя задача — загрузить dylib или присоединить статическую библиотеку к уже существующему исполняемому файлу для устройства IOS.
Я буду использовать static void __attribute__((constructor)) initialize(void)
для запуска swizzling.
Этот исполняемый файл предназначен для внутреннего корпоративного магазина приложений, поэтому мне не нужно проходить через магазин приложений Apple (поскольку они его отвергнут).
Причина этого заключается в том, чтобы взять существующий IPA от клиента и его ключи подписи и добавить новую функциональность в свое приложение, не требуя вмешательства разработчика.
Есть одна компания, которая занимается этим, называется нукона. Вы можете посмотреть фильм здесь: https://www.youtube.com/watch?feature=player_embedded&v=z9rrOB6lOxY
Могу вам сказать, что я пытался поместить LSEnvironment в файл plist с DYLD_INSERT_LIBRARIES
но оказалось, что LSEnvironment не имеет никакого эффекта в песочнице приложения IOS.
Я также попробовал install_name_tool для изменения одной из зависимостей и замены ее моей dylib (у которой тоже есть эта зависимость). Вылетает без объяснения причин.
Очевидно, что если я добавлю dylib к тестовому приложению в XCode и перекомпилирую, он будет отлично работать, что является данностью.Однако это то, о чем я не могу спросить, например, администратора компании. Пересборка может отпугнуть клиентов от использования этой библиотеки.
Вот связанная ссылка, которую я нашел о переполнении стека, но для osx, и мне это нужно для IOS. Как вставить команду LC_LOAD_DYLIB в двоичный файл Mach-O (OSX)
Единственное, что я могу придумать, это каким-то образом отредактировать двоичные команды загрузки, но я не уверен, как и как это сделать, используя с учетом таблиц перемещений и т.д...
Любая альтернатива приветствуется.
Спасибо за внимание.