Практика
FireMonkey и разработка под Mac OS/iOS

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика
С выходом Delphi XE 2 мы получили возможность писать программы под Mac OS и iOS. В свете замаячивших на горизонте новых перспектив появилось желание изучить эту возможность. Далее я расскажу о том, что у меня получилось. В самом начале стоит сказать, что для программирования под Mac/iOS лучше иметь компьютер под управлением Mac. Но у меня такой возможности нет, по этому я в своих экспериментах использовал VMWare с Mac OS 10.6.6 Snow Leopard.

Первым делом разберемся с Mac OS. Чтобы иметь возможность запускать (и как следствие, отлаживать) приложение со своей машины под управлением Windows, на (в моем случае виртуальной) машине с MacOS X нужно установить paserver (Platform Assistant server). Находится этот сервер в C:\Program Files\Embarcadero\RAD Studio\9.0\PAServer. В этой директории располагаются два файла: setup_paserver.zip для использования на Mac OS X и setup_paserver.exe для использования на 64-битной Windows. Нужно скопировать setup_paserver.zip на Mac и открыть его. После распаковки запускаем приложение setup_paserver для начала установки (все настройки можно оставить по умолчанию). Для установки PAServer нужна среда выполнения Java, и если она у вас отсутствует, то для продолжения работы установщика необходимо подключение к интернету.


Теперь необходимо запустить сервер, для чего в терминале набираем команду /User/svp/Applications/Embarcadero/PAServer/paserver (вместо svp напишите имя пользователя на вашей Mac OS). Нас попросят ввести пароль (он необходим для подключения Delphi XE2 к серверу через порт 64211), вводите что хотите (например 123). Все, сервер настроен, переходим к клиенту.

В Delphi XE2 открываем новый проект FireMonkey и добавляем целевую платформу OS X. Теперь нужно ассоциировать с этой платформой профиль, для чего кликаем правой кнопкой на OS X и выбираем “Assign Remote Profile...” и в открывшемся окне нажимаем кнопку “Add...”. Теперь нужно пройти все шаги мастера. В первом окне задаем имя профилю (любое, какое нравится). Во втором окне пишем IP машины с Mac OS, номер порта оставляем 64211, и пишем пароль, который вводили при запуске сервера. Нажатием на кнопку “Test Connection” для проверки соединения, и если все в порядке переходим к следующему окну. Нажимаем “Finish” и на этом заканчиваем настройку профиля.

Запускаем приложение, затая дыхание ждем появления программы на Mac, и... И если у вас реальная Mac’овская железка, все пройдет гладко, а вот если у вас, как и у меня, виртуалка, то нас ждет неприятность в виде ошибки “Last Error == WSAEINTR”. Я не смог с ней справиться ни на VMWare ни на Oracle VM VirtualBox. В интернете об этом удалось найти лишь упоминание что Embarcadero не поддерживает Hackintosh. Жаль, придется на время отложить эксперименты с Mac OS.

Но не все потеряно, есть же еще iOS, посмотрим, получится ли с ней что-нибудь. Здесь уже иной подход. Во-первых нужно создать приложение FireMonkey для iOS. Во-вторых для компиляции нам потребуется установить на Mac среду разработки XCode (желательно не ниже 4) и iOS SDK 4.2.x или выше. Если лень все это ставить самостоятельно, в интернете можно найти образ с уже установленными инструментами для разработки. Но на этом настройка Mac не заканчивается, и нам нужно установить FireMonkey-iOS, образ которого (файл FireMonkey-iOS.dmg) находится в c:\Program Files\Embarcadero\RAD Studio\9.0\FireMonkey-iOS\. Перенесем его на Mac и запустим.


Из появившегося окна сначала устанавливаем Free Pascal Compiler 2.4.4 (fpc-2.4.4.intel-macosx.pkg), а затем Fire Monkey (FireMonkey-IOS-XE2). Установка пройдет без проблем и после этого наш Mac готов к работе.

Набросав в редакторе компонентов на форму жмем F9 и... И видим перед собой приложение для Windows, но мы ведь не этого хотели. Что же делать? Для начала нужно сконвертировать наш проект в проект для XCode. Для этого в Delphi есть консольная утилита dpr2xcode.exe, которая лежит в папке bin. Чтобы упростить себе жизнь при использовании этой утилиты, добавим пункт в меню Tools.


После конвертации переносим появившуюся папку xcode на Mac. Важно, чтобы папка не находилась в каком-нибудь виртуальном каталоге, (например, настроенном и расшаренном для синхронизации) в этом случае могут возникнуть проблемы с путями при компиляции проекта. Я копировал папку на рабочий стол Mac OS. Во избежание лишних проблем следим за тем, чтобы в имени папки не было пробелов. Открываем проект в XCode, в выпадающем списке выбираем эмулятор iPad или iPhone, компилируем и запускаем. Осложнений возникнуть не должно (во всяком случае у меня было именно так).


После нескольких экспериментов эмулятор меня немного разочаровал. Во-первых: допустим у нас на форме есть только поле TEdit, и оно получает фокус. Появится виртуальная клавиатура которую мне никак не удалось свернуть. Мелочь, но это нужно учитывать, так как если она перекроет другие компоненты внизу формы, мы потеряем к ним доступ. Во-вторых: абсолютно не работают проекты 3D, видимо на эмуляторе нет OpenGL.

Вот таким было мое первое знакомство с программированием под Mac OS и iOS с использованием FireMonkey. Эксперименты в этом направлении я, скорее всего, прерву на какое то время, так как для себя сделал вывод – хочешь писать под Mac OS/iOS, нужен Mac, а у меня его нет.

Пожалуй, для первого опыта достаточно. Удачи в программировании.

P.S. ВАЖНО

После публикации этой статьи я продолжил эксперименты в области разработки программ под iOS. Путь был тернист, не обошлось без подводных камней, об одном из которых я просто не могу не рассказать. Это связано с использованием виртуальной машины VMware. Как я уже писал в этой статье, у меня не получилось запустить приложение в режиме отладки на Mac OS 10.6.6 Snow Leopard. Работала Mac OS на VMware Workstation 7.1.2 Build 301548. А вот у Владислава Баженова такой проблемы не возникло, в чем можно убедиться из его публикации Delphi XE2: Hello, Mac OS! Для продолжения экспериментов я решил установить (в соответствии со статьей) Mac OS X Lion 10.7.1, для чего обновил VMware Workstation до версии 8.0.2 Build 591240. Неприятность произошла в тот момент, когда я устанавливал Fire Monkey (FireMonkey-IOS-XE2). В процессе установки произошла ошибка, и для ее решения предлагалось обратиться к разработчику. После нескольких попыток стало понятно, что Fire Monkey установить не получится. Обновление Mac OS X Lion до версии 10.7.3 проблему не решило. Предположив, что причина неудачи кроется именно в операционной системе, я решил сделать откат до Mac OS 10.6.6 Snow Leopard (ведь раньше на ней все работало). Но тут меня постигло еще большее разочарование и недоумение, потому что это не решило проблему, Fire Monkey по-прежнему не устанавливался. Никогда бы не подумал, что причина может крыться в VMware, но все указывало именно на это. Откатившись до VMware Workstation 7.1.2 Build 301548 и Mac OS 10.6.6 Snow Leopard все заработало как в первый раз, когда я писал эту статью.

Мораль: если хотите разрабатывать приложения под iOS с использованием виртуальной машины, остановитесь на конфигурации, доказавшей свою пригодность и стабильность: VMware Workstation 7.1.2 + Mac OS 10.6.6 Snow Leopard.

P.P.S. Не забудьте настроить VMware. В разделе настроек: Edit->Preferences->Priority выберите в списке Input grabbed значение High, а в разделе Edit->Preferences->Memory->Additional Memory выберите пункт "Fit All virtual machine memory into reserver host RAM".

При использовании материала - ссылка на сайт обязательна