Всем привет, кто не знает меня зовут Сергей! И в очередной статье я задену разработку на Object Pascal.
В настоящее время и Delphi и FPC/Lazarus (FPC - free pascal compiler, Lazarus - IDE) поддерживают сборку под разные платформы.
В данной статье ознакомлю вас с возможностями разработки Android-приложений средствами FPC/Lazarus, в том числе и игр. И так же немного добавлю информации по Delphi, чтоб проще было искать нужную вам информацию, если вы используете данную среду разработки, но по самой разработке в Delphi для Android я не смогу вам дать достаточно необходимой информации на данный момент.
Вступление
Я достаточно случайно столкнулся с возможностью создания Android-приложений для FPC/Lazarus и прошёл довольно не малый путь чтобы более-менее понять как всё устроено и работает. За то время что я занимаюсь разработкой кроссплатформенной библиотеки ZenGL в FPC/Lazarus достаточно немало поменялось и было улучшено для удобства пользователей. В данное время, как и было раньше, самое сложное остаётся это настройка среды, для создания Android-приложений (речь не про Delphi, там вроде как из коробки всё идёт).
Здесь вы можете посмотреть видео, которые я выкладывал в процессе изучения разработки под Android.
Только начинал и это был, в тот момент, самый простой способ для меня использовать возможность использовать кросскомпилятор для создания Android-приложений. Использовался CodeTyphon.
Дальше делаю нативное приложение с использованием SO-библиотек. Используется Eclipse, но так же сейчас можно делать и для Android Studio, а вернее всего даже проще. Смотреть надо либо перематывая, либо на ускоренной скорости. Показывал полный процесс ну и ещё очень плохо зная java. )))
Дальше немного устаревшая информация по созданию APK-приложения используя ZenGL. В то время всё ещё использовался Eclipse. Но вполне возможно кому-то информация будет полезна.
В течение всего времени как я занимаюсь разработкой ZenGL, становится понятно что FPC/Lazarus не очень подходят новичкам чтобы разрабатывать приложения под Android. И даже при наличии очень немалой информации это всё равно вызывает сложности у новичков и поэтому я не советую этим заниматься людям, которые не готовы приложить усилия для настройки среды разработки и которым нужно готовое решение.
Кому-то данный процесс может показаться интересным, но большинство это оттолкнёт, в особенности если вы программируете не на Паскале.
Немного о Delphi
Я не использую Delphi для Android по простой причине, что я не видел примеров которые дают возможность создавать достаточно нативные приложения. Но недавно натолкнулся на пример и есть большая вероятность что добавлю возможность сборки ZenGL проектов для Delphi, если эти примеры в самом деле содержат такую возможность.
Среда разработки позволяет собирать проекты под Windows, Linux, MacOS, Android и iOS.
Надеюсь ни чего не пропустил, если пропустил, то надеюсь люди дополнят этот момент.
Данная среда работает с двумя языками C++ и Object Pascal. Давайте не будем спорить по этому поводу, лично я считаю что Delphi это не язык, а среда разработки. Это моё личное субъективное мнение! )))
Было выпущено несколько книг по работе с Delphi, часть из них рассказывает и про мобильную разработку:
-
Дмитрий Осипов "Delphi XE2", 2012
-
Всеволод Леонов "Обучение мобильной разработке на Delphi", 2014-1015
-
Рубанцев Валерий "Большой самоучитель Delphi XE3", 2013
-
Дмитрий Осипов "Delphi. Программирование для Windows, OS X, iOS и Android", 2014
на этом моё обозрение, можно сказать, подошло к концу. Кстати, не забывайте заглядывать на сайт Embarcadero, там вполне возможно вы найдёте интересующую вас информацию.
FPC/Lazarus требования и возможности
FPC позволяет собирать приложения под множество платформ, ознакомиться можно здесь.
Первичные требования для разработки под Android на данное время это FPC старше версии 3.0.4.
Немного об FPC.
На самом деле первые версии FPC которые собирали код для Android-приложений были сделаны достаточно давно и их версия где-то в районе 2.6.n - 2.7.n (могу ошибаться). Но на данное время было множество обновлений и изменений, поэтому и не рекомендуется использовать версию ниже 3.2.0.
Lazarus. В данном случае выбирайте один из последних и из стабильных версий. В большинстве случаев выбор версий не критичен, а зачастую последние версии несут дополнительную функциональность. Есть маленькая проблема с Lazarus, на переходных версиях могут быть несовместимости и созданный вами проект может не открываться в другой версии Lazarus. В таких случаях в каких то версиях есть поле для совместимости со старыми проектами, что не решает проблем с новыми проектами. Я же делаю своим способом: удаляю файл *.lpi и открываю в Lazarus файл *.lpr, в следствии чего Lazarus сам создаёт нужный *.lpi файл и проект нормально открывается (но это не говорит что какие-то проекты не будут глючить в следствии этого).
Недавно я делал небольшой обзор IDE Lazarus. Новичкам это может быть полезно.
С момента когда FPC начал собирать код для Android, люди начали писать множество приложений и развивать это направление.
laz4Android - сборка для Lazarus которая "идёт по умолчанию" во многих случаях. Была одной из первых.
LAMW - проект который использует laz4Android и данный проект устанавливается в Lazarus и имеет свои компоненты для разработки Android-приложений (посещайте форум, там может содержаться очень немало информации). Будьте внимательны, данный проект в определённой ревизии может быть не стабилен и надо консультироваться с разработчиком по исправлениям или использовать более раннюю версию LAMW. Так же он не совместим со стандартными LCL-компонентами. Но это не отменяет того, что с ним достаточно просто работать.
Custom Drawn Interface/Android - набор графических интерфейсов основанный на нативном Android. Наиболее совместим с LCL. Как я понимаю, в настоящее время почти не имеет поддержки.
LazToAPK - о данном проекте мало чего можно сказать, но он позиционируется как проект для помощник установки необходимых компонентов.
FPCUPDeluxe - графический установщик для FPC и Lazarus. С его помощью вы можете установить на Windows, Linux и MacOS - FPC/Lazarus а так же скачать, установить и настроить кросскомпилятор, в том числе и для Android.
Castle Game Engine - проект позволяющий создавать игры для Android. На самом деле для многих платформ используя Object Pascal.
ZenGL - кроссплатформенная библиотека (фреймворк) позволяющая создавать приложения и 2/2.5D игры (можно и 3D, если вы знаете OpenGL) без знаний каких либо графических библиотек. С основными возможностями можно ознакомится по данной ссылке.
Со всеми библиотеками я не смогу ознакомить вас в одной статье, но если вы интересуетесь, то зайдите на вики Free Pascal и там вы сможете подчерпнуть немало информации. Маленький совет, читайте не только русские или только английские ветки, а чередуйте их. Какая-то информация может устареть на какой-то ветке, а какая-то может оказаться нужной. Хотя по большей части, они наиболее совпадают.
Настройка среды разработки
Для разработки под Android я использую ОС Linux и очень сильно к ней привык, потому где-то может мелькать моё субъективное мнение. Прошу прощения за это!
Изначально вам надо установить FPC и Lazarus. Вы можете так же использовать CodeTyphon (если вы используете CodeTyphon, то часть информации идущей далее можете просто пропустить).
Установить FPC можно согласно вики. Скачав установочные файлы Lazarus здесь или с начальной страницы (FPC идёт в комплекте). А так же используя FPCUPDeluxe.
Лично я, для новичков, больше бы посоветовал использовать FPCUPDeluxe, так как это графическая оболочка и она, по большей своей части, уже делает необходимые действия, не принуждая вдаваться в лишние детали.
Прикладываю видео, где быстро пробегаюсь по установке FPC/Lazarus с помощью FPCUPDeluxe и так же показываю пример как можно для Windows установить кросскомпилятор другим способом.
Хотя на самом деле очень много уже примеров для подготовки FPC/Lazarus для работы с Android, но всё равно ещё много не согласованной информации по сборке кросскомпилятора. Вы можете, в конечном счёте, собрать его сами просто скачав для этого всё необходимое с GitLab. Но я думаю мало кто сможет воспользоваться такой возможностью (хотя даже скачав исходники оттуда, многое можно сделать практически на автомате, там подсказки есть). И именно по этой причине я советую использовать FPCUPDluxe.
Так же надо установить Java. Без Java, к сожаленью, не обойтись в настоящее время в мобильной разработке.
Дальше я бы посоветовал просто установить Android Studio и не задумываться ни о чём. В комплекте с ним идут обычно и SDK и NDK (насчёт NDK не совсем уверен, вполне возможно его надо устанавливать дополнительно). Либо вам надо будет установить SDK и NDK отдельно.
Но вполне возможно многим Android Studio понадобится для тестирования работы нативного кода. Поэтому вам выбирать что именно вы будете устанавливать.
В настоящее время все необходимые пути подтянулись у меня сами, раньше надо было их указывать для FPC/Lazarus, поэтому это тоже требует проверки.
Какую-то информацию по сборке кросскомпилятора можно посмотреть здесь, здесь или здесь. И так же многое по установке кросскомпилятора расписано на сайте Castle Game Engine.
Обратите внимание, если какой-то из способов у вас вызывает затруднение, вы можете использовать подсказки по другим ссылкам. Многое из них подобно и/или дополняет друг друга.
Создание и сборка проектов
Если использовать LAMW, то создание и сборка проекта ни как не отличается от обычного создания проекта в Lazarus. Простейший пример можно увидеть на GitHub. Напоминаю, такие приложения не совместимы с LCL-приложениями!
Примерно как это будет выглядеть:
в конце собираем проект и получаем APK или AAB файл.
LAMW - это одна из самых популярных библиотек для разработки Android-приложений, но я ей не пользуюсь... Она очень хороша для создания обычного приложения, вроде LCL для Windows, Linux или MacOS. Но для создания игр она не очень хорошо подходит.
Для создания игр под Android подходят Castle Game Engine, ZenGL и... как ни странно SDL... Хотя на самом деле движков для создания игр было немало, можно посмотреть на вики FreePascal часть движков. Часть из них могла создавать проекты как раз под Android, но многие просто заброшены.
С SDL многие знакомы и всё необходимое надо смотреть на их сайте и смешивать с информацией на сайте Free Pascal meets SDL. Делает кто-то на Pascal игры для Android используя SDL я не могу сказать, я не видел. Но игры используя SDL и Pascal вообще делают.
Castle Game Engine - это достаточно мощный и развивающийся графический движок. И информацию всю надо искать именно у них на сайте, в документации, их форуме или других источниках. Я в своё время пробовал, мне не очень сильно понравилось, но это моё личное мнение! Часть игр сделанных на CGE работают на Android.
ZenGL - достаточно минималистичный движок. По подготовке движка к работе с Android я расписывал здесь и там же расписано как запустить демки. По ссылке указано что используется Eclipse, но на данный момент используется Android Studio для конечной сборки проектов. Произвести надо те же действия что и для Eclipse, только папка другая для демо-версий теперь.
Неудобство ZenGL в том, что для него нет ни каких графических сред, где вы можете расставить какие-либо элементы и всё делать надо вручную. А так же для всех ваших новых проектов надо прописывать пути до модулей ZenGL и файлов настроек. Ну и этот движок в основном для 2/2.5D сделан. Так же есть возможность делать 3D приложения, но для этого надо знать OpenGL.
Достоинства: достаточно прост в создании простых 2/2.5D игр; не требует знания графических библиотек (если вы используете средства самого ZenGL); достаточно немалый функционал, который связан не только с графикой.
Видео, где производится сборка проекта используя Android Studio
Связанное
В то время когда я начинал заниматься Android, я изучал методы взаимодействия нативного кода с java-кодом. Пример из видео, где производится работа с передачей массивов из java-кода в нативный и обратно.
Пример как можно работать с логами:
Итоги
Как можно заметить FPC/Lazarus имеют немало возможностей создания Android-приложений.
Из плюсов можно отметить:
-
после настройки всего необходимого для создания проектов, зачастую не требуется использовать другие IDE. Всё можно собрать прямо в Lazarus и сразу тестировать.
-
умельцы могут разрабатывать приложение в определённой IDE и производить сборку сразу для всех поддерживаемых (и не поддерживаемых, по желанию) платформ. Для этого где-то есть готовые настройки, а где-то придётся произвести свои настройки для проекта.
Из минусов:
-
долгие предварительные установки и настройка.
-
новичкам будет сложно ступать на эту тропу.
Хотя в большинстве случаев, для создания приложений под Android всегда требуется очень много рутинной работы и дополнительные настройки. Исключением можно считать наверно только Android Studio, где (вроде как) всё изначально идёт в комплекте.
Надеюсь материал пригодится как новичкам, так и не совсем новичкам. Надеюсь ни чего не забыл упомянуть, хотя наверняка забыл.
Всего доброго!
Автор: Seenkao