Как превратить приложение на iPad в программу для Mac
В июне этого года, на WWDC, Крейг Федериги артистично и с примерами рассказал кое о чем очень важном. Благодаря чему в macOS вернулся Twitter, и появились Jira и Asphalt. Но самое главное о причине этих чудес так и не было сказано.
Чтобы никто не усомнился в важности и ценности этой причины, в macOS 10.15 устроили жестокую и безжалостную зачистку. Под нож пошли 32-битные приложения, с которыми не решались окончательно расстаться в течение многих лет, приложения без подписи автора (по которой, в случае чего, автора легко и быстро вычислят). Жертвы этого чудовищного акта вандализма, до самого последнего их дня, были востребованы, многие из них были уникальны, их нечем заменить. Образовалась область повышенного спроса. И теперь нужно максимально быстро и качественно этот спрос удовлетворить. Не поспешили ли они? Вдруг этот "катализатор", исправно ускорявший создание Mac’овских приложений в пробирках в лабораториях Apple, или под присмотром ее специалистов, в реальном мире превратится в "пшик"?
С чего началось создание Catalyst
Не преувеличили ли они свое достижение? Люди создающие программное обеспечение и те кто организует и управляют думают по разному. В конце 80-х недостаточное понимание этой разницы в мышлении буквально разрушило намечавшийся успех компании NeXT. То, что могла предложить эта компания, при грамотном применении, обещало реальные конкурентные преимущества. Гениально, на личном примере (а Стив все-таки менеджер, не программист), он внушил аудитории: библиотеки и средства разработки от NeXT просты, эффективны, сроки разработки программ уменьшаются в разы. Ему поверили. У тех кто принимает решения, сложилось превратное представление о увиденном. Когда их пытались переубедить специалисты, они не верили никому. Программисты - лентяи, менеджеры - перестраховщики, все плохие. Результат: сроки на реализацию проектов устанавливались нереальные (потому что в NeXTSTEP все разрабатывается быстрее в разы), без предварительной подготовки персонала (потому что все просто и понятно, учиться нет необходимости), да еще и с завышенными требованиями. Естественно, это не работало, проект за проектом заканчивались ничем. Разочарование, обвинение Джобса и NeXT в обмане и жульничестве.
Крейг Федериги отважно наступил на те же грабли. Чтобы превратить iPad-приложение в настоящее Mac’овское приложение, нужно в Xcode, в конфигураторе проекта, поставить галочку в в чекбоксе "Mac". И это - почти все. Превращение на этом не заканчивается, в проекте нужно сделать еще кое-что, но все это займет максимум несколько дней. А то и несколько часов. Все легко и просто. Вот примеры (Twitter, Jira, Asphalt). Пробуйте! Это же легко!
Летом 2018 года о чем-то похожем уже говорили. Несколько приложений для iPhone (News и еще что-то), каким-то волшебным образом, были перенесены в macOS Mojave. Они, если честно, не впечатляли. Упоминалась технология Marzipan. Чем-то похожим в Apple уже занимались, в начале 10-х, но по каким-то причинам проект был закрыт. И вот - Catalyst. Катализатор. Вещество, которое само не принимает участия в химической реакции, но многократно ее ускоряет. Презентация в исполнении Крейга Федериги была, как всегда, блестящей и захватывающей. Сразу же всем доступным для общения представителям Apple стали задавать один и тот же вопрос: "это слияние iOS и macOS?" - на который все ответили "нет". Ага, решили журналисты, значит все-таки слияние. Не думаю. И в любом случае, даже если бы это было слиянием, со стороны мобильных операционных систем в нем участвовала бы iPadOS.Предлагаем подписаться на наш канал в «Яндекс.Дзен». Там вы сможете найти эксклюзивные материалы, которых нет на сайте.
Как перенести приложение с iPad на Mac
Если опустить подробности и сильно все упростить, все нынешние системы Apple устроены очень похоже. То, что не имеет дела с пользовательским интерфейсом, совпадает в них почти один в один. Будем называть эту часть по имени главной из библиотек входящих в эту часть: Foundation. В macOS пользовательским интерфейсом "занимается" AppKit, в iOS и iPadOS - UIKit. Физические принципы интерфейсов существенно отличаются. В Mojave, в рамках проекта с кодовым наименованием Marzipan, рядом с AppKit появилась необычная библиотека с знакомым названием - UIKit. Для потребителей (исходные файлы программ) она почти один-в-один совпадала с UIKit из iOS. А вот ее начинка, максимально близко к оригиналу, имитировала UIKit средствами macOS, то есть AppKit.
Полученное в результате катализа приложение работает так: поскольку большая часть его исходного кода написана для iPadOS, интерфейсная часть программы взаимодействует с UIKit/macOS, который выполняет роль умного синхронного переводчика. С самой macOS взаимодействует AppKit. На уровне блок-схемы это просто и элегантно, в реальности все сложней. Перевод инструкций реального приложения для iPad в инструкции для macOS не может быть идеален. Блок Foundation (который даже не стали показывать на блок-схеме) в macOS и iPadOS почти идентичен. Почти. Кроме Foundation и UIKit в реальном приложении используются и другие библиотеки, не все из которых поддерживаются в macOS. В исходном коде все, что пытается использовать эти библиотеки, нужно изолировать. И, возможно, эту часть функционала приложения нужно реализовать какими-то обходными средствами. То есть, далеко не каждое приложение можно превратить в Mac’овское за 2-3 дня.
Даже поверхностного знакомства с Catalyst достаточно для правильного ответа на вопрос про слияние. Это не слияние. Это еще один способ создавать приложения для macOS, не более того. В настоящее время, таким приложениям приходится проходить проверки в двух App Store. Сначала - в iOS App Store (iPadOS App Store, насколько я знаю, пока еще не появился), основой для катализа должно быть iPad-приложение отвечающее требованиям Apple. А потом - в Mac App Store. Хлопотно? Вроде бы Apple планирует организовать для "каталитических" приложений отдельный App Store (честно говоря, не представляю как в эту схему можно воткнуть специальный App Store - жду с нетерпением). Превращение macOS-приложений в приложения для iPadOS даже не рассматривается.
Поможет ли катализатор возместить пользователям Mac’ов утраченное ими в результате зачистки 2019 года? Поживем - увидим.