Подтвердить что ты не робот

Путаница, как сделать приложение OSX обратно совместимым и как протестировать их

после прочтения руководства Apple SDK https://developer.apple.com/library/mac/#documentation/developertools/conceptual/cross_development/Overview/overview.html

Я все еще смущен тем, как сделать Mac-приложение обратно совместимым и как правильно их протестировать

У меня есть приложение, я запустил его и протестировал его на Mountain Lion 10.8 без каких-либо проблем, однако я хочу сделать это приложение обратно совместимым, чтобы другие пользователи могли запускать его на Mac 10.6 - 10.7.

  • У меня есть идентификатор разработчика Apple, и я могу загрузить старые версии 10.7 и 10.6, но проблема в том, что у меня есть компьютер macbook 2011 года, который в настоящее время работает 10.8, и что единственная машина для Apple, которая у меня есть, Могу ли я проверить 10.7 и 10.6 с помощью vmware или параллелей?

  • в настройках моего проекта я установил целевое развертывание на 10.6 (так как я хочу, чтобы 10.6 пользователей запускали мое приложение), но должен ли я установить SDK на 10.8 или 10.7? если я установил SDK в 10.8, но если целевое развертывание установлено на 10.6, если я исправлю все предупреждения xcode, он будет успешно запущен на 10.6??

  • из раскрывающегося списка SDK я могу установить только 10.8 или 10.7, но 10.6 отсутствует, как я могу это исправить?

заблаговременно

4b9b3361

Ответ 1

Я развиваюсь на коробке 10.8 и поддерживаю 10.5. Всего пару месяцев назад мы сбросили 10,4 поддержки PPC, и я все еще очищаю часть кода, характерного для 10.2. Это может немного поработать, но я давно делаю старые версии. У меня есть некоторые мнения по этому вопросу.

  • Независимо от того, что Apple говорит в своих документах, если вы хотите поддерживать 10.6, затем создайте с помощью 10.6 SDK. Не полагайтесь на цель распространения.
    • У меня было это обсуждение с инженерами Xcode, и, хотя они придерживаются линии Apple, которую вы всегда должны строить с помощью новейшего SDK, они также признают, что это вообще безумие. Если вы создадите против 10.8 SDK и отметьте цель развертывания в 10.6, вы не получите никаких предупреждений об использовании методов, которые не существуют в 10.6. Единственный способ узнать, что вы использовали несуществующий метод, это то, что он может дать вам странные ошибки при запуске на 10.6. Это безумие.
    • Помните, что OS X не сбой при отправке неизвестного селектора. Он просто прерывает текущую runloop. Таким образом, ошибки еще сложнее отслеживать, а затем на iOS, где это приводит к сбою приложения.
    • Конечно, вы можете сделать слабую связь. Разговор об опасном.... Да, есть несколько раз, это полезно, но компилятор не дает вам никаких предупреждений, если вы не делаете это правильно. Если я собираюсь сделать слабую связь таким образом, я иду в другую сторону, связывая старый SDK и копируя новый прототип функции в мою реализацию. Таким образом, у меня есть документация по каждой функции, я думаю, что я пойду на слабую ссылку.
  • Загрузите старые SDK и добавьте их в свой дистрибутив Xcode.
    • Остерегайтесь их ревниво. Apple будет пытаться удалить их каждый раз, когда вы обновляете Xcode. Сделайте свои собственные копии и вставьте их в /SDK или где-нибудь еще от Xcode. Я предоставляю script fix-xcode для автоматического управления символическими ссылками. Я горько отношусь к Apple за их неустанное сопротивление удалению моих старых SDK? Да, я.
  • Вы можете запустить 10.6 Server в VM на законных основаниях. Вы можете запустить 10.7+ Desktop в VM на законных основаниях. Это хороший способ проверить ваш код.
    • Или вы можете делать то, что я делаю, и иметь небольшую кучу старых MacBooks с двумя или тремя разделами на них, которые вы перезагружаете все время.
    • Теперь, когда 10.7 приходит из App Store, немного сложнее создавать виртуальные машины. Моя сильная рекомендация - мгновенно снять изображение сразу после установки и сделать чистую резервную копию. Вы хотите время от времени клонировать это изображение, когда вам нужно вернуться к "сырой" машине.
    • Получите привычку бегать SDK, когда они выходят. 10.8 будет когда-нибудь старым. Вы могли бы также сделать копию сейчас, пока это легко.
  • Независимо от того, поддерживаете ли вы отдельные потоки-точки или нет, может быть очень полезно поддерживать обновления пакетов для отдельных точечных версий. Когда вы сталкиваетесь с клиентами, которые запускают текущие версии, приятно иметь возможность проверить, легко ли воспроизводится ошибка "невоспроизводимая" на их конкретной версии. Стоит ли это того или нет, зависит от вашего продукта и клиентов. Это была спасательная жизнь для меня, когда 10.4.11 внесли серьезные изменения в WebKit во время точечного релиза...
  • Инвестируйте в небольшой NAS или большой внешний USB-накопитель (хотя у меня были проблемы с неудачами при использовании широко, поэтому я предпочитаю RAID). Вам понадобится место. Вы хотите держать много виртуальных машин и множество SDK, а иногда и старых версий Xcode.

Ответ 2

Добавление к Робу Напиру в глубине :

Чтобы использовать старый SDK, поместите здесь SDK (или символическую ссылку):

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs

С XCode 7.3 или более поздней версией вам нужно открыть этот файл и изменить "MinimumSDKVersion" (иначе XCode откажется от использования старого SDK):

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist

Ответ 3

  • Вы можете установить несколько версий Mac OS на одной машине, загрузившись между ними.
  • SDK должен быть последним (10.8).
  • См. 2.

Один из вариантов, который я рассмотрел (я нахожусь в одной лодке), - создать Snow Leopard Hackintosh с использованием старого ПК и просто установить Lion и Mountain Lion на моем MBP.

Ответ 4

Вам необходимо выполнить следующие настройки:

1.Установите базовый SDK на текущую версию Mac (например, 10.7)

2.Установите SDK для развертывания в более раннюю версию (пример 1.1)