OSX Sandbox: запуск другого исполняемого файла в зависимости от версии ОС

У меня есть приложение в Mac App Store. Я пытаюсь поддержать пользователей, возвращающихся к Snow Leopard, но это становится все труднее.

Недавно я столкнулся с препятствием из-за iTunesLibrary.framework, этот фреймворк должен быть связан с основным исполняемым файлом, но это всегда будет вызывать сбой при загрузке при работе в Snow Leopard.

Чтобы обойти эту проблему, я хочу скомпилировать версию своего приложения, в которой не используются функции и фреймворки из более новых версий OSX. Проблема в том, как я могу запустить сборку совместимости автоматически?

Я подумываю сделать так, чтобы основной исполняемый файл указывал на сценарий оболочки, но мне эта идея не очень нравится. Я также подумал о том, что основной исполняемый файл является помощником, который просто запускает полное приложение, а затем закрывается. Я ожидаю, что это сработает, но я беспокоюсь, что это будет одобрено Apple. Наконец, мне интересно, может ли сам формат пакета приложений поддерживать такую ​​настройку, возможно, с помощью расширенного использования CFBundleExecutable, о котором я не знаю.

Кто-нибудь был на этом пути, что бы вы посоветовали?


person Tim    schedule 27.03.2014    source источник


Ответы (1)


Попробуйте слабое связывание фреймворков, подробнее о Слабое связывание и Apple Frameworks здесь. Затем также проверьте в своем коде версию ОС или - (BOOL)respondsToSelector:(SEL)aSelector любого NSObject, чтобы определить, что вы можете вызывать, а что нет.

Чтобы использовать Snow Leopard в качестве базового SDK, вам понадобится старый Xcode, и у вас возникнут проблемы с отправкой в ​​Mac App Store.

person mahal tertin    schedule 28.03.2014
comment
Слабые ссылки не помогут. Если фреймворк отсутствует, я в порядке, но если он присутствует, то даже если я не хочу его использовать, фреймворк загрузится, что приведет к сбою. - person Tim; 29.03.2014