Создание приложения для Android в Delphi
Создание первого приложения для Android в Delphi.
Советы, тонкости, нюансы. Программирование и отладка. Программа "Привет, мир"!
Еще уроки здесь (список постоянно пополняется).
Создание первого приложения для Android в Delphi.
Советы, тонкости, нюансы. Программирование и отладка. Программа "Привет, мир"!
Еще уроки здесь (список постоянно пополняется).
Хоспадя, зачем вы ентот труп откопали и насилуете?
Есть жаба, шарпей, котлян и питон.На худой конец го или плюсы.
Какой сакральный смысл писать на практически мертвом языке (рейтинг 1.13%) ещё и не оптимизированном под ведроид для меня загадка.
Какой ещё труп? Ты с ума сошел? Приходилось писать приложения на Java (Android Studio) на этом ужаснейшем и многословном языке. По поводу шарпей - ты сам то пробовал писать на них с этим убогим Xamarin? Сколько лет ты будешь писать проект простейший не имея хороших навыков в том же шарпе и Xamarin? Котлин чуть лучше, особенно приятно наблюдать слизанные из Delphi объявления переменных и функциональность. Но.... Далеко от совершенства. Про питон я вообще когда слышу, так мне хочется смирительную рубашку на человека надеть. Особенно когда пишут, что на питоне можно разработать ВСЁ. Можно конечно, но КАК? Я вот пытался написать приложение десктоп на нем и на Киви приложуху под андроид. Это вы называете программированием? Вы видимо не пробовали программировать на Delphi, вот в чем ваше несчастье. Иначе не писали бы подобных глупостей.
По поводу питона полностью согласен. Бедные студенты испугались паскаля в детстве, а питон им "лучше зашол", теперь они костылят всюду и везде, используя только чужой код как пример, за частую даже не переделывая его и не обдумывая. Я же, написал впервые приложение под андроид на делфи (когда появилась такая возможность) без каких-либо сложностей и множества шаблонного кода. Я даже не разбирался в платформе андроид. У делфи уже огромная абстракция для всех платформ, что дает очень высокую скорость разработки простого приложения.
Студенты же, сейчас даже не представляют, насколько можно быстро и легко писать на делфи в сравнении с питоном, да даже с шарпом и срр. В делфи все исходники открыты и ты можешь проследить весь код от начала запуска приложения (или линкования библиотеки). Да даже можно библиотеку отлаживать, когда она подключается линкуется к чужому приложению.
А простота разработки графической составляющей? Питонисты просто-напросто не знают, что такое дизайнер. Кьют дизайнер, который можно использовать с питоном - это ужас. Я видел такие проекты и знаю людей, которым выпала честь попробовать это всё использовать.
Этот "труп" на данным момент мощнейший инструмент о возможностях которого вы даже не догадываетесь.
Последний раз когда я читал про все это дело там еще была шедевральная кромплатформенность под iOS/mac когда тебе нужна машина на винде чтобы вести разработку (потому что сама среда умеет работать только на винде) и машина на маке чтобы все это собирать (потому что кросскомпилятора тоже нет), с линуксом ситуация аналогичная. Также не стоит забывать что этот 1.13% во многом легаси на VCL (библиотека компонентов того самого борландовского дельфи), а современная кросcплатформа это уже другая библиотека firemonkey т.е. если кто-то хочет взять свою старенькую программу и собрать под андроид или iOS то фиг там. При этом эмбасадеро еще и хотело за все это чудо конских денег что напрочь отсекло еще и всех кто просто хотел написать программу на старом-добром привычном дельфи для себя (или они сбежали в опенсурсный лазарус)
К вашему сведению, кроссплатформенность в RAD Studio на данный момент лучше чем у любых других существующих сред разработки.
Ни одна среда тебе не позволит собирать софт для всех платформ разом используя единую кодовую базу. Брать во внимание интерпретируемые языки - глупо, т.к. это не нативный код. В то время как на Delphi вы генерируете нативный код для всех платформ. Ни Qt ни Xamarin не позволят вам создать единое приложение для всех платформ без костылей и дублирования кода.
Теперь поговорим о сборке.
Кросскомпилятор естественно имеется в среде и сборку можно осуществлять без сторонних машин и для линукс и для макос. Подключение требуется для выкачивания SDK для сборки и возможности отладки в режиме реального времени.
Т.е. ставим WSL или виртуальную машину для макоси и делаем подключение, выкачиваем SDK и собираем софт.
Теперь о покупке софта.
В RAD Studio имеется бесплатная версия среды с лицензией аналогичной Unity и VS. Называется RAD Studio Delphi/C-Builder Community Edition
Ни одна среда тебе не позволит собирать софт для всех платформ разом используя единую кодовую базу. Брать во внимание интерпретируемые языки - глупо, т.к. это не нативный код. В то время как на Delphi вы генерируете нативный код для всех платформ. Ни Qt ни Xamarin не позволят вам создать единое приложение для всех платформ без костылей и дублирования кода
Это ну прям очень сильно зависит от конктретного приложения, если это что-то относительно простое, то кодовая база будет единой и для qt, и для react-а, и для flutter'а, и, я так думаю, для Xamarin forms (но его я не щупал). А на сложном при желании можно найти примеры когда даже при использовании нативной среды и только под iOS вам придется в рантайме смотреть версию операционки и уходить в одну или другую сторону.
Но вообще я писал в основном про то что это совсем не тот Делфи (читай vcl) т.е. старые наработки не применимы, а если писать все с нуля то преимуществ у Delphi перед другими кросплатформенными средами не так чтобы есть (или они не известны широкому кругу людей). При этом не стоит забывать что и более популярные и полностью бесплатные кроссплатформы часто не то чтобы прям суперуспеха добились и часто можно видеть статьи в стиле "да пошел этот Фреймворк к черту, давайте перепишем все на натив", например, https://medium.com/airbnb-engineering/sunsetting-react-nativ... .
Кросскомпилятор естественно имеется в среде и сборку можно осуществлять без сторонних машин и для линукс и для макос. ... Т.е. ставим WSL или виртуальную машину для макоси и делаем подключение, выкачиваем SDK и собираем софт.
Если я правильно вас понял, то что вы описали это не сборка без сторонних машин, это сборка без сторонних физических машин (но я нигде и не писал про именно физический комп), но вам все равно нужна машина на винде для работы среды и машина на маке для собственно сборки, то что у вас одна из них (или обе) виртуальные сути дела не меняет. И, кстати, это не кросскомпиляция (при кросскомпиляции именно что сборка идет для другой платформы, например, сборка тех же приложений для iOS), это билдагент который собирает бинарники для своей же платформы, просто управляется он снаружи
В RAD Studio имеется бесплатная версия среды с лицензией аналогичной Unity и VS. Называется RAD Studio Delphi/C-Builder Community Edition
Погуглил - появилась таки полтора года назад. А ведь еще в 2006 были бесплатные версии (turbo delphi), но потом пришел embassadero и больше 10 лет пытался висеть только на платных версиях чем, мягко говоря, не поспособствовал популярности среды
Но так или иначе, даже сейчас в FMX обширная библиотека обернутых общих вещей между платформами. Естественно, что каждая ос имеет уникальные вещи, которые можно (но не обязательно) использовать. Например, трей на Винде и на Линукс. Такого функционала нет на мобильных платформах. Или частично. Но и то, для таких случаев просто игнорируются интерфейс. Код один, но на Винде будет трей контрол, а на андроид просто не будет вызовов.
Про компиляцию и сборку. Например, wsl. Мне нужно лишь раз подключить Линукс машину, чтобы выкачать сдк. После этого, я могу собрать без подключения машины. Так же для андроид (точно) и иос (не точно).
При всем при этом не совместим с vcl только код, связанный непосредственно с интерфейсом. В остальном совместимость имеется. Имеются и утилиты, которые переделывают несложный интерфейс из vcl в fmx
Да, о возможностях Delphi сейчас мало кто знает. Например, мало кто знает, что на Делфи можно писать фронт для веб. На выходе мы получаем html + js + css. Имеется и поддержка веб-фронт фреймворков. Например, бутстрап.
Помимо этого, на Делфи можно быстро собрать бэк для апач или иис(cgi), ну и standalone сервер.
На Делфи имеется и ещё один веб-фреймворк - UniGui, который позволяет создать целый веб сервис.
Имеется и ещё один фреймворк для андроид - FGX. Это фреймворк с нативными контролами.
Дружище, можно подробнее про фронт для веб на делфи, примеры там? Очень интересна эта тема.
И да, я говорю именно о кросскомпиляции. Мы получаем на выходе бинарный файл, например exe или apk. Собираем ещё х64 apk и можно отправлять в магазин гугл. Проверено, работает.
нет, черт возьми, кросскомпиляция это когда вы на одной системе собираете под другую, а не когда у вас есть отдельная система которая собирает под себя. Вы же описываете именно ситуацию когда нужно две системы - та где работает среда (и именно в этом проблема, все остальные кроссплатформы не прибиты гвоздями к винде, хотя я и помню костыли в виде неявной установки wine у MoSync - был такой кроссплатформенный Фреймворк лет 10 назад) и та которая собирает под себя
Ну и на всякий случай напишу в явном виде, я не имею ничего против Delphi, более того, именно Delphi (тогда еще Object Pascal) был моим первым языком если не считать совсем уж детские игры с QBasic под досом, но, к сожалению, его владельцы продолбали его популярность. Причем Делфи еще и жестко завязан на одной конкретной конторе, причем конторе у которой кроме Делфи и нет ничего. Для сравнения - qt это с++ которого полно и без qt, xamarin это с# который имеет поддержку microsoft, react native и phonegap это js/typescript которые применимы в веб фронтенду и без реакта/фонгепа, flutter это поддержка гугла и Dart который опять-таки применим и без флатера, даже чертов kivy про который я ни разу не слышал success story это Python и навыки могу пригодиться и без kivy. А что у Делфи? Язык который есть только в этой среде (про которую очень многие говорят "закопайте труп") и в лазарусе еще при наличии кучи конкурентов без опасности остаться у разбитого корыта у разработчиков и отстегивать дофига денег за лицензию если таки раскрутился и проблем с поиском тех самых разработчиков у бизнеса?
Так например, в Делфи есть дженерики, инлайн переменные, инлайн методы и куча ещё всего.
Т.е. можно объявлять переменные так:
begin
var I: Integer;
var s: string = 'text';
var d := 5.04;
for var n := 1 to 10 do...
for var c in s do...
И так далее
end;
только это все ни разу не преимущество потому как уже у многих есть, дженерики так и вовсе десятки лет
Я не выдаю это за преимущество. Я говорил вроде о развитии. О развитии не только под Делфи, но и самого Делфи.
Зато я говорил что не вижу каких-то преимущество, а вы мне в ответ пишете фичи которые есть почти у всех
Я по моему дал вам не мало преимуществ именно этого языка. Все остальное - это ответы на ваши же вопросы. Вы не теряйте нить своих мыслей, пожалуйста.
Мощный дизайнер. Настоящий кроссплатформ. Кастомные интерфейсы из коробки. (Скины и мощный скин движок)
Сам язык не уступает шарпу по удобству и срр по возможностям.
Нет зависимостей у конечного приложения (дотнет или кьют либы).
Высокая совместимость версий внутри среды.
Высокая скорость сборки (раз в 10 быстрее чем у си).
3д дизайнер сцены. Масса компонентов из коробки по дизайну (анимации, эффекты (тени, свечение, обработка)).
Высокая интеграция с виндой. Можно без костылей сделать кастомную форму с 3д эффектами.
И так далее. Я могу продолжать часами.
Я вроде вам нормально выше написал. Мне не нужна вторая машина, чтобы собирать проект под целевую платформу. Я собираю под Андроид без андроид машины. Я собираю под Линукс без Линукс машины и без wsl. Нужно лишь сдк.
Компания, помимо Delphi владеет кучей вещей. Погугли "Idera".
Ни kyvi, ни xamarin не смогут тягаться с Delphi FMX. Я знаю все эти фреймворки и языки. На шарпе я тоже пишу и на питоне. И кьют использовал.
Сейчас язык обзаводится огромной поддержкой. А среда разработки выходит каждый год. А каждые 3 месяца обновления и патчи активной версии.
значит все осталось по старому и я не могу разрабатывать на маке под iOS с прицелом что потом соберу под андроид (многие андроид разрабы тоже используют мак или линукс и у них будет аналогичная ситуация). Почти все остальные среды сами тоже являются кроссплатформенными или поддерживают разработку в VSCode/idea/etc
На маке в параллель все работает без проблем. У вс кода и других сред нет таких возможностей дизайнера и кроссплатформ разработки. Я уже это говорил
Вы назвали среды, которые больше блокнот чем среда. Самая мощная среда ВС также только на Винде.
Потягаться может только qt. И то под мак там все плохо. Джава конечно есть везде, только вот удобство писать на ней сомнительное.
Ставь Lazarus и пиши на любой среде, если тебе так важно разрабатывать именно в рамках той ОС, под которую ты пишешь. Про дженерики десятки лет...)) Смешно. В Delphi всегда были ТИПЫ. Ознакомься, что это такое. Дженерики - это лишь их подобие. И в Делфи они были добавлены лишь для того, чтобы в комментах не писали, что в Делфи нет дженериков. Мы сами всегда могли создать тот тип данных, который был необходим СВОЙ и использовать его в рамках программы, возвращать и обрабатывать СВОЙ тип данных, который только вздумается. Это тебе не классы городить на проклятых ООП языках. Тут ты свободен в выборе, когда и в каком виде тебе писать приложение.
Android
983 поста7.8K подписчиков
Правила сообщества
Сообщество посвящено обсуждению и обмену опытом использования устройств, работающих под управлением ОС Android/Linux, а также программного обеспечения для них. Обсуждение других операционных систем (в том числе GNU/Linux) - только в рамках их взаимодействия с Android.
В сообществе запрещены:
* заведомо деструктивные рекомендации
* бессодержательная переписка, особенно с переходом на личности собеседников
* обсуждение нужности рутового доступа (он нужен, и если у вас его нет - мы вам искренне посочувствуем, но искать другие способы решения вашей проблемы не будем)
* обсуждение нужности ПО от Google (необходимости в нем нет, и если вам этот функционал не нужен - смело запускайте pm disable-user или даже pm uninstall, только не забудьте предварительно сделать полную резервную копию)
Если вы просите о помощи, обязательно укажите максимально полную информацию об используемом вами устройстве, чего вы хотите добиться и какие шаги для этого предпринимали - это существенно ускорит получение ответа, так как из обсуждения будут исключены диалоги вида "попробуй вот так - пробовал, не помогает". Соответственно, и при ответе следует давать рекомендации, подходящие для любого устройства. Если вы не уверены в универсальности решения, напишите об этом явно: "у меня %s и мне помогло %s".
Данная редакция правил действует с момента ее публикации: 2022-01-27 22:00:00 +03:00