Кросс-платформенная разработка приложений для Windows и Linux

29 Янв 2016

Кросс-платформенная разработка приложений для Windows и Linux

Можно ли запустить PC-приложение на мобильном телефоне? Ответ на этот вопрос зависит от способа разработки приложения и его воз­мож­но­стей. Постараемся приблизиться к этой проблематике с простейших, в чем-то даже наивных опытов, в ходе которых приложение с интер­фей­сом GUI последовательно компилируется и запускается в среде Linux64, Win64, Win32, Android. В процессе эксперимента мы ожидаем получить на экране два текстовых сообщения и кнопку. Будем программировать так, чтобы после нажатия кнопки текст второго сообщения, а также его цвет фона и символов изменились. Компилировать будем с помощью Free Pascal в среде разработки под названием Lazarus, используя соответствующие его версии для сборки под разные операционные системы.

 

Компилируем, запускаем и снова компилируем

Весёлые картинки ниже иллюстрируют все стадии эксперимента. Подписи под ними призваны облегчить понимание происходящего тем, кто впервые столкнулся со средой Lazarus, но не теряет надежды овладеть секретами мастерства.

Начнем опыт в среде Linux x64.

Размеры формы для окна приложения несколько уменьшаем по сравнению со значениями по умолчанию, поскольку заранее предусматриваем запуск на малогабаритном мобильном устройстве.

Создаем кнопку, кликом мыши сначала на элементе меню объектов пользовательского интерфейса, затем на форме.

Средствами визуального программирования точно выставить размер кнопки не удалось, край кнопки при перемещении мышью изменяется скачком на несколько пикселей, поэтому воспользуемся инспектором объектов для установки размера с точностью до пикселя.

Создаем текстовую метку.

Определяя свойство OnClick объекта TButton создаем процедуру для обработки нажатия на кнопку. Записываем операторы, изменяющие текст, цвет фона и цвет символов (фонта) для метки.

Компилируем и запускаем приложение (клавиша F9).

Нажимаем кнопку мышкой и видим изменения второй надписи. Проверка под Linux завершена.

Запускаем IDE в среде Windows 7 64-bit.

Также запускаем приложение.

Видим такой же результат.

Запускаем IDE в среде Windows XP 32-bit.

Также запускаем приложение.

Видим такой же результат.

Запускаем интегрирующую оболочку laztoapk. и эмулятор Android Virtual Device. Подключены пакеты Android SDK (Software Developer Kit), Android NDK (Native Developer Kit), JDK (Java Developer Kit) и утилита lazbuild.exe. На сегодня, подружить четырех перечисленных монстров удалось только под 32-битной ОС, поэтому надеемся на скорый выход стабильных релизов интегрирующей оболочки. Кнопкой на верхней панели запускаем Lazarus.

Запуск IDE Lazarus. Скомпилировать исходный проект в неизменном виде не удалось, кроссплатформенность пока далека от идеала. Анализ и грамотное построение контекста Android-приложения будет темой отдельного исследования. А на данном этапе, возьмем один из готовых примеров, удалим его основное содержимое (сохранив копию), поместим операторы, реализующие пользовательский интерфейс нашего простейшего приложения и запустим компиляцию (Shift-F9).

Компиляция успешна. Процессор ARM, операционная система Android. Очевидно, запустить такой проект под Windows нельзя. Также акцентируем внимание на необходимости соответствия установленной процессорной архитектуры для компилятора и эмулятора Android Virtual Device. Очевидно, под что компилировали, на том и запускаем.

Выходим из Lazarus, возвращаемся в интегрирующую среду. Нажимаем кнопку Build & Deploy.

На этом этапе выполняется несколько операций, существенных для понимания происходящего. Результат компиляции проекта, файл *.SO (Linux Shared Object) преобразуется в файл *.APK (Android Package). Этот файл загружается на виртуальное устройство.

Приложение загружено. Зверушка, символизирующая среду разработки Lazarus, позаимствована из примера, который был использован в качестве шаблона.

Приложение запущено успешно, дизайн пользовательского интерфейса изменился до неузнаваемости. Кроме того, было замечено, что если надпись заканчивается символом «d», фрагмент последнего символа строки «затирается», возможно это происходит и с некоторыми другими символами, все возможные символы не проверялись. Проблема устраняется добавлением пробела в качестве последнего символа. Вместо надписи CPHW (Cross Platform Hello World) в шапке окна выводится project1. Еще есть над чем поработать.

Нажимаем кнопку, цвет и содержимое текстовой метки изменилось.

Резюме

Разумеется, после запуска простейшего примера выводы делать преждевременно. Вместе с тем, как видно по результатам, исследуемая среда разработки обеспечивает достаточно безболезненный переход между системами Linux и Windows, если, конечно, разработчик не применил неких конструкций, специфичных для заданной ОС либо аппаратной платформы. В случае адаптации PC-приложения для Android можно говорить лишь о некотором уменьшении трудоемкости процедуры портирования, что пусть и неплохо, но к реальной кросс-платформенности имеет весьма отдаленное отношение.

Литература

Процесс инсталляции интегрирующей среды, необходимой для построения Android проектов, описан в документе Lazarus and Android.

Публикации на тему кросс-платформенных разработок:

Теги: