Lazarus и Android

Взаимопомощь, вопросы, проблемы, советы и решения
Аватара пользователя
Андрей
Архитектор
Сообщения: 7344
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 516 раз
Поблагодарили: 462 раза

Lazarus и Android

Сообщение Андрей »

Сразу скажу, что в Android-приложении мы МОЖЕМ использовать компоненты «TEdit», «TButton», «TCheckBox», «TComboBox», «TProgressBar», «ТТгаскВаг», «TTimer», «ТМеmо», «TBitBtn», «TImage», «TLabel» и некоторые другие. Список всех поддерживаемых визуальных компонентов, судя по всему, описан в модуле customdrawndrawers.pas:
TCDControlID = (
cidControl,
// Standard
cidMenu, cidPopUp, cidButton, cidEdit, cidCheckBox, cidRadioButton, cidListBox, cidComboBox, cidScrollBar, cidGroupBox, cidPanel, // Additional cidStaticText, // Common Controls cidTrackBar, cidProgressBar, cidListView, cidCTabControl
) ;
Если мы захотим использовать какие-то другие компоненты, но вряд ли они будут работать.
Однако в этом списке нет Timage, а он все-равно работает. Вероятно, что работают и все остальные компоненты-наследники «TGraphicControl».
Взято отсюда: http://www.loginovprojects.ru/LAZARUSForAndroid.pdf
Хотя это 2013 года документ.

Написал автору этого документа на e-mail.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7344
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 516 раз
Поблагодарили: 462 раза

Re: Lazarus и Android

Сообщение Андрей »

Продолжение темы Лазарус и Андроид было найдено тут: https://www.cyberforum.ru/lazarus/thread1304916.html

Lazarus и Android.pdf
Work.rar
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7344
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 516 раз
Поблагодарили: 462 раза

Re: Lazarus и Android

Сообщение Андрей »

Михаил Киселев писал(а):
10 мар 2019, 07:35
Андрей, Андрей, хорошо бы я ошибался. Однако меня смущает вступление к тому документу, что ты цитируешь:
На данный момент (2013 год) автор не является программистом под
андройд, он не создал для него ни единой мало-мальски полезной
программы. Знаком с андройдом весьма поверхностно.
Любой вывод, сделанный автором, может оказаться субъективным /
ложным / неактуальным. Автор будет рад, если ему об этом сообщат.
Так ты проверь. Человек по ссылке выше взял и проверил (18.11.2014). Работают компоненты Button, есть даже скриншот с подтверждением и готовый архив с программой:

primer.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7344
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 516 раз
Поблагодарили: 462 раза

Re: Lazarus и Android

Сообщение Андрей »

Аватара пользователя
Андрей
Архитектор
Сообщения: 7344
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 516 раз
Поблагодарили: 462 раза

Re: Lazarus и Android

Сообщение Андрей »

Да ну к чертям собачьим этот Лазарус вместе с Андроидом. Полдня убил на это дерьмо, скачал кучу пакетов, а потом Java какую-то хрень пишет что скомпилировать не может. За 6 лет уже инструкция устарела. Некоторые функции не работают.

Никакой программы под Андроид не будет. Вся эта инструкция - это грёбаные костыли со скачиванием кучи софта. Я думал, что Лазарус одним нажатием компилирует в Андроид, как и для Windows. А он компилирует в какую-то библиотеку (liblclapp.so), которую потом нужно докомпилировать Джавой. Версии этой Джавы постоянно меняются, версии Андроида тоже, совместимость между этими кучами скачанного софта теряется от обновления версий.

Код: Выделить всё

Note: src\com\pascal\lcltest\LCLActivity.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Код: Выделить всё

c:\Android\Work\MyA1\android>call java -classpath C:\Android\android-sdk\tools\lib\sdklib.jar com.android.sdklib.build.ApkBuilderMain C:\Android\Work\MyA1\android\bin\MyTest-unsigned.apk -v -u -z C:\Android\Work\MyA1\android\bin\MyTest.ap_ -f C:\Android\Work\MyA1\android\bin\classes.dex

THIS TOOL IS DEPRECATED. See --help for more information.

java.io.FileNotFoundException: C:\Android\Work\MyA1\android\bin\MyTest.ap_ does not exist
Аватара пользователя
Андрей
Архитектор
Сообщения: 7344
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 516 раз
Поблагодарили: 462 раза

Re: Lazarus и Android

Сообщение Андрей »

Хотя, был получен ответ:
для Lazarus-2.0.0-fpc-3.0.4 последнее время активно развивается проект LAMW (Lazarus Android Module Wizard). Всё делается намного проще и быстрее без всяких bat-файлов. На сайте https://forum.lazarus.freepascal.org/in ... 919.0.html можно проконсультироваться с авторами проекта.
Lazarus и Android_LAMW-мастер.pdf
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Андрей
Архитектор
Сообщения: 7344
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 516 раз
Поблагодарили: 462 раза

Re: Lazarus и Android

Сообщение Андрей »

Видеоинструкция:

Аватара пользователя
Андрей
Архитектор
Сообщения: 7344
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 516 раз
Поблагодарили: 462 раза

Re: Lazarus и Android

Сообщение Андрей »

1. Проект/Создать проект/LAMW (GUI) Android Module.
2. Использовать компоненты с вкладок "Android Bridges...", пишем код как обычно, компилируем.
3. Для запуска в отладчике Запуск/LAMW Build Android Apk...

===

Чтобы каждый раз не производить инсталляцию в виртуальную машину используйте "Запуск / Компилировать (собрать или быстрая компиляция)".
Аватара пользователя
Андрей
Архитектор
Сообщения: 7344
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 516 раз
Поблагодарили: 462 раза

Re: Lazarus и Android

Сообщение Андрей »

Чтобы решить проблему "Cannot find gtk2 used by Gtk2CellRenderer of package LCL" нужно сделать следующие шаги:

1) Открыть ваш проект в Lazarus IDE
2) В Lazarus IDE выбрать "Проект - Параметры проекта (Shift+Ctrl+F11)"
3) В "Параметрах компилятора" открыть вкладку "Дополнения и перекрытия"
4) Правой кнопкой кликнуть на поле "Присвоить LCLWidgetType" и выбрать значение "customdrawn", - это необходимо для компиляции под Андроид

Уточнение пункта 4. Добавить Макрос IDE в свойства - "LCLWidgetType:=customdrawn".
Аватара пользователя
Андрей
Архитектор
Сообщения: 7344
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 516 раз
Поблагодарили: 462 раза

Re: Lazarus и Android

Сообщение Андрей »

Сетевой компонент Synapse:
http://www.ararat.cz/synapse/doku.php/download

Описание работы с ним:
https://webdelphi.ru/2013/12/kniga-o-sy ... -0-sokety/

Код: Выделить всё

  try
    sock:=TUDPBlockSocket.Create;
    sock.Connect('127.0.0.1', '10101');
    if sock.LastError<>0 then begin ShowMessage('error'); exit; end;
    sock.sendstring('delivered via UDP');
  finally
    sock.Free;
  end;