- Lazarus компиляция под android
- Re: Lazarus и Android — обмен опытом
- Re: Lazarus и Android — обмен опытом
- Re: Lazarus и Android — обмен опытом
- Re: Lazarus и Android — обмен опытом
- Re: Lazarus и Android — обмен опытом
- Android tutorial
- Contents
- Windows
- Prepare folder
- Install JDK
- Install SDK
- Install NDK
- Install Laz4Android
- Rebuild Laz4Android IDE
- Compile the demo «androidlcl»
- Deployment
- Links
- Linux
- Prepare folder
- Install OpenJDK
- Install SDK
- Install NDK
- Build FPC 2.7.1
- Rebuild Lazarus IDE
- Android/ru
- Contents
- Компоненты
- Lazarus
- Андроид среда
- Версии Системы, SDK, NDK
- Загрузка Приложений
- Кросс-компилятор
- Андройд платформы
- Android NDK
- Установка из дистрибутива
- Сборка кросскомпилятора из исходников
- Получите последнюю версию исходников
- Сборка кросс-компилятора
- Компиляция под Андройд
- Общие Сведения
Lazarus компиляция под android
Aleks69 » 01.03.2021 12:20:11
Предлагаю в этой теме обсуждать все, что связано с использованием Lazarus для написания под Android.
Все вполне работает, включая автоматический запуск эмулятора после окончания компиляции в среде lazarus.
Только там laz4android, на который ссылаются, не смог поставить коомпоненты (не хватает памяти!), хотя был открыт только он. Видимо, та версия не может использовать выше 4Gb, поэтому взял laz4android по-новее.
Конечно, среда получилась несколько эклектичная, но, во всяком случае, с настройками нового проекта Android c GUI: NDK — 21, Min APi — 14, Target API 29, Builder — ANT, ARMv7a+SOFT
APK-файл собирается и на телефоне запускается.
Re: Lazarus и Android — обмен опытом
Seenkao » 01.03.2021 13:38:26
Честно говоря, на официально форуме FPC/Lazarus — довольно не мало этой теме посвящено.
А так, как я занялся больше нативными приложениями под Android, то может кого и заинтересует так же нативная разработка. Но я больше использовал Eclipse для сборки приложения. APT, Gradle не очень почему-то захотелось пользоваться. Хотя, думаю там сложного тоже мало.
Плейлист с видео по Android — в плейлисте приведён так же с абсолютно нативным приложением.
Ссылка на код, абсолютного нативного приложения. — код не мой и сделан достаточно давно. Как пример хорошо подойдёт.
Re: Lazarus и Android — обмен опытом
java73 » 01.03.2021 17:21:22
Re: Lazarus и Android — обмен опытом
Aleks69 » 01.03.2021 17:33:28
Re: Lazarus и Android — обмен опытом
Seenkao » 01.03.2021 18:39:45
java73 , может быть потому, что: «Чего-то тут не хватает. «, «Что-то у меня это тормозит. » и подобное?
Я не стал даже рассматривать Android Studio как средство разработки программ под Android. Причём от слова совсем .
Я прекрасно помню, как беря какой-нибудь Delphi, TurboPascal — ты брал и делал то, что работало быстро! И тебе не приходилось бодаться с «оболчками» чтоб они тоже работали быстро. Как выходили программы достаточно небольшие (хотя уже тогда ругались, что слишком большие получаются программы).
А что из этого может предоставить Android Studio? Я лично, не вижу ни чего!
Но! Мы смотрим абсолютно под разными углами! Меня не интересуют визуальные интерфейсы в том варианте, в каком они предоставлены сейчас. Ни в одной из оболочек разработки! А вас, они устраивают!
Меня интересует скорость работы программы, вас интересует скорость разработки программы.
И, если визуальные компоненты не будут (вдруг кгда-то) занимать как лишнее место в программе, так и лишнее процессорное время — то вероятно такая оболочка вполне сможет удовлетворить. Но опять помнить надо, что оболочка тоже тормозить не должна.
Re: Lazarus и Android — обмен опытом
java73 » 02.03.2021 07:49:54
Не понимаю о чем мы, о какой тормознутости такой говорите. Идея у меня работает на древнем одиннадцатилетнем пк. Студия конечно потребовательнее, но и отдает взамен она несравнимо больше. Насчёт интерфейсов тут нужно следить, поскольку мир меняется каждый месяц так, что пропустив, не поймёшь ничего. Сейчас прямо активно двигается compose, мультиплатформенная декларативная парадигма. Одновременная разработка под десктопы и любые ос, андроиды и иос.
Чего может не хватать в студии? Это иронический надеюсь вопрос? Может анализатор кода и предсказатель не устраивают? Автоматический рефакторинг, оптимизация циклов, рекурсий, автолинтер, навигация по коду, интерфейсам, имплементациям и даже автоматически сгенерированным фабрикам зависимостей?
А насчёт интерфейсов самих сред. Ну здесь дело привычки же. Андроид студия, установленная на ссд вполне нормально летает. А в итоге выходит нативный оптимизированный код, для своей родной на андроиде jvm. Вы собирали когда-нибудь приложение на питоне с киви? Он в пакет включает полностью весь питон и запускает его внутри виртуальной машины jvm, и выполняет ваш код как на реальной питон машине. Думаете паскаль лучше собирается под jvm, чем родной для него код?
Но и это не главное. Главное на мой взгляд — огромная инфраструктура библиотек вокруг java/kotlin. И как вишенка сверху — сам котлин.
Seenkao писал(а): java73 , может быть потому,
что: «Чего-то тут не хватает. «, «Что-то у меня это тормозит. » и подобное?
Я не стал даже рассматривать Android Studio как средство разработки программ под Android. Причём от слова совсем .
Я прекрасно помню, как беря какой-нибудь Delphi, TurboPascal — ты брал и делал то, что работало быстро! И тебе не приходилось бодаться с «оболчками» чтоб они тоже работали быстро. Как выходили программы достаточно небольшие (хотя уже тогда ругались, что слишком большие получаются программы).
А что из этого может предоставить Android Studio? Я лично, не вижу ни чего!
Но! Мы смотрим абсолютно под разными углами! Меня не интересуют визуальные интерфейсы в том варианте, в каком они предоставлены сейчас. Ни в одной из оболочек разработки! А вас, они устраивают!
Меня интересует скорость работы программы, вас интересует скорость разработки программы.
И, если визуальные компоненты не будут (вдруг кгда-то) занимать как лишнее место в программе, так и лишнее процессорное время — то вероятно такая оболочка вполне сможет удовлетворить. Но опять помнить надо, что оболочка тоже тормозить не должна.
Источник
Android tutorial
This article applies to Android only.
Contents
Windows
This is a quick tutorial on how to create android apps with Lazarus.
In this tutorial assume used versions JDK 1.6u45 + SDK 22.2.1 + ndk-r9 + Laz4Android1.1-41139-FPC2.7.1
Prepare folder
Create on C:\ a folder called «Android»
Install JDK
It will be installed in to C:\Program Files\Java\.
Install SDK
DOWNLOAD FOR OTHER PLATFORMS > SDK Tools Only
Install sdk (installer_r22.2.1-windows) into C:\Android\android-sdk
Copy at «C:\Android\android-sdk\tools» the file «apkbuilder.bat» (can be found here
Now update the SDK [WIN START > SDK Manager ]
add android 4.0 (API 14)
add android 2.2 (API 8]
Install NDK
Download only the file android-ndk-r9-windows-x86.zip
Unzip android-ndk-r9-windows-x86.zip into C:\Android\android-ndk-r9
Install Laz4Android
New version can download from here:[1]
Unzip Laz4Android1.1-41139-FPC2.7.1.7z into C:\Android\laz4android
Edit the file C:\Android\laz4android\build.bat like this :
Run build.bat (doubleclick) -> It will compile & build lazarus.
Rebuild Laz4Android IDE
Select «Start IDE»
select «Package» «Install/Uninstall Packages»
select customdrawn 0.0 > install selection and hit save and rebuild IDE , continue
Compile the demo «androidlcl»
Copy C:\Android\laz4android\examples\androidlcl at C:\Android\Projects\androidlcl
File > open «C:\Android\Projects\androidlcl\androidlcltest.lpr»
Project > project options
Compiler options > select «Release TAndroid»
Libraries -Ll : C:\Android\android-ndk-r9\platforms\android-8\arch-arm\usr\lib;C:\Android\android-ndk-r9\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.6
Target file name : android\libs\armeabi\liblclapp.so
Other : -dANDROID -Xd -CpARMV6 -FLlibdl.so
Ide macro values : macro name : LCLWidgetType macro value : customdrawn
Now Run > Compile this will generate this library : C:\Android\Projects\androidlcl\android\libs\armeabi\liblclapp.so [5.073 kb]
Deployment
Modify the first 6 lines like this :
Use as password : «senhas»
This will produce the file :
- Edit with a text editor
Modify the first 6 lines like this :
I had to change mine to this on sdk version 22:
run «build_debug_apk.bat» answer at the questions and give the password «senhas» when asked
This will generate
C:\Android\Projects\androidlcl\android\bin\lcltest.apk [1.549 kb]
- Create an Android Virtual Device
START > AVD Manager
New > AVD name > give a name
Target Android 4 API 14
Once created select the virtual device and hit «start» > «Launch» wait a couple of minutes.
- Edit with a text editor
Modify like this :
Run «adb_install.bat» . This will install the «LCL Test» into your Virtual device
Edit with a text editor the file
By running this you will get a debug file here :
Links
Linux
Note: Work in progress.
This is a quick tutorial on how to create android apps with Lazarus.
In this tutorial assume used versions are Ubuntu 13.10, OpenJDK 1.7.0_51, SDK 22.2.1, ndk-r9, Laz4Android1.1-41139-FPC2.7.1
Prepare folder
Install OpenJDK
Install SDK
DOWNLOAD FOR OTHER PLATFORMS > SDK Tools Only
Extract SDK () into
Now update the SDK (Start
add android 4.0 (API 14)
add android 2.2 (API 8]
Install NDK
Download only the file android-ndk-r9d-linux-x86.tar.bz2
Extract android-ndk-r9d-linux-x86.tar.bz2 into
Build FPC 2.7.1
Install latest FPC distribution package:
Download latest FPC trunk from SVN:
Build FPC trunk for ARM to
Rebuild Lazarus IDE
Select «Start IDE»
select «Package» «Install/Uninstall Packages»
select customdrawn 0.0 > install selection and hit save and rebuild IDE , continue
Источник
Android/ru
Эта статья относится только к Android.
Андроид это операционная система основанная на модифицированном ядре Linux, а так же имеющая собственную виртуальную машин Dalvick, основанную на Java. Free Pascal даёт возможность разрабатывать программы для Андроид как нативные (для определённого вида процессора на котором работает операционная система), так и для виртуальной машины.
Contents
Компоненты
Большинство функционала Андроид системы, доступны через Java компоненты. FreePascal поддерживает компиляцию в Javacode. Для разработки таки приложений требуется установить Android SDK.
Некоторым приложениям, достаточно использовать только фунционал доступный через нативные Андроид (например игры). Для разработки таких приложений требуется установить Android NDK. Но для интеграции с графической средой системы придётся так же установить и Android SDK. Так же потребуется кросс-компилятор для нативной Андроид системы.
Lazarus
Для Lazarus доступен ряд компонентов, для разработки графический приложений под Андроид:
- laz4android — сборка лазаруса с необходимыми пакетами и FPC, подготовленными к сборке. Только Windows.
- LAMW — Lazarus Android Mobile Wizard. Разрабатывается под сборку laz4android (может быть установлен на «обычный» Лазарус, при наличии необходимых компонентов)
- Custom_Drawn_Interface/Android — набор графических интерфейсов основанный на нативном Андройде. Маскисмально совместим с LCL.
- LazToApk
Андроид среда
Версии Системы, SDK, NDK
Новые версии системы Андройд выходят регулярно. Так же обновляются версии SDK и NDK, так же известный как API версия. Нумерация идёт паралельно, но при выпуске новой версии Андрой системы, обычно увеличивается номер API версии. При обновлении подверсии системы Андроид, API версия может не поменяться.
Например, Android 5.x, использовал несколько номеров API версий 21 и 22 Тогда как, Android 6.x, использовал только одну API версию: 23
Необходимо различать номер системы и номер API.
Подробнее можно прочитать в истории версий Андроида
Загрузка Приложений
Есть несколько способов загрузить приложения на Андроид:
- используя APK (Application Package File)
- вручную, например через SSH. Но такие приложения будут иметь крайне ограниченный функционал.
Кросс-компилятор
Андройд платформы
Поддержка Андройд платформы официально добавлена начиная с версии FPC 3.0.
ARM64 (CPU_TARGET=aarch64) (на лето 2016, доступен только в trunk)
JVM (не рассматривается на этой странице)
Android NDK
Независимо от того, устанавливаете ли вы FPC из официального дистрибутива, или компилируете из исходников, вам необходимо установить Android NDK. NDK требуется для сборки кросс-компилятора, а также RTL и FCL библиотек.
После чего распакуйте в любую директорию.
Установка из дистрибутива
Начиная с версии FPC 3.0, компилятор распространяется с подготовленным кросс-компилятором и подготовленными RTL и FCL пакетами для Win32 системы.
1. Скачайте дистрибутив с офицаильной Sourceforge странички проекта
2. Во время установки, дистрибутив потребует указать папку, в которой распакован NDK
Указанный путь будет использован для обновления конфигурационного файла, чтобы указать на андройд инструментарий
3. Дистрибутив кросс-комплиятора можно устанавливать поверх ранее установленных дистрибутивов FPC (например win32, win32-arm, win32-win64).
Сборка кросскомпилятора из исходников
Получите последнюю версию исходников
Получите последнюю версию исходников из SVN репозитория.
Это можно сделать с помощью следующей командной строки
Процесс загрузки исходников может занять некоторое время. По-завершению исходники будут находится в директории «fpcsrc».
Сборка кросс-компилятора
На лето 2016 — для сборки fpc-trunk, необходима рабочая версия комплятора FPC 3.0.0. (Общее правило: trunk всегда должен собираться, последним официально выпущеной версией FPC компилятора. Официальная версия всегда доступна в дистрибутиве, и её установка и использование не должно вызывать проблем)
В качестве примера, исползуется сборка arm-android кросс-компилятора в Windows. Однако процесс сборки для других систем — идентичен. (Единственное что необходимо менять, это путь к файлам, а так же использование команды «sudo» при копировании комплиятора в системные папки для unix систем)
Сборка кросс-компилтяора для i386-android, mips-android происходит по аналогичной схеме.
Предположим, что используются следующие директории (папки)
- Android NDK находится в C:\Program Files\Android SDK\android-ndk-r8d
- Исходники FPC trunk находятся в C:\Develop\FPC\fpcsrc
- Кросс-компилятор нужно установить в C:\Develop\FPC\pp
1. Добавьте в переменную-среды PATH пусть, где находится инструментарий из NDK. Для данного примера, это:
C:\Program Files\Android SDK\android-ndk-r8d\toolchains\arm-linux-androideabi-4.7\prebuilt\windows\bin
Заметка: «android-ndk-r8d» — это версия ndk. Этот суфикс меняется от выпуска к выпуску. Точно так же может меняться версия «arm-linux-androideabi-4.7». На лето 2016, на официальном сайте доступна вресия android-ndk-r11с, с версией androideabi-4.9. Соотвственно путь, при установке NDK в C:\Program Files\Android SDK\ будет: C:\Program Files\Android SDK\android-ndk-r11c\toolchains\arm-linux-androideabi-4.9\prebuilt\windows\bin . Обязательно проверяйте версию NDK которую вы используете, и изменяйте путь соответствующим образом. В дальнейшем пример будет использовать версию r8d.
2.1 Откройте командную строку и перейдите в папку с исходниками fpc:
2.2 Запустите следующую команду:
Заметка: INSTALL_PREFIX — указывает пусть установки кросс-компилятора. Если он не указан, то установка произойдёт в путь, по-умолчанию. На unix-системах, это системная папка. Запись в неё, скорей всего, потребует прав супер пользователя, и должна быть использована команда sudo.
По завершению выполнения команды, собранный кросс-компилятор (а также RTL и FCL) будут установлены и доступны в C:\Develop\FPC\pp . По-умолчанию, компиляция происходит с:
- -O2 оптимизацией.
- включёном FPU эмуляторе (для ARM процессора)
Если нужны другие настройки компилятора, но их можно передать с помощью параметра CROSSOPT .
Например, если нужно собрать с поддержкой аппаратного FPU и поддержкой инструкций ARMv7a, следует использовать следующу команду:
В папке, куда был установлен кросс-компилятор C:\Develop\FPC\pp\bin\i386-win32 , был помещён файл конфигурации fpc.cfg. Его нужно отредактировать и добавить следующий текст
Параметр -Fl, указывает на стандартные системные библиотеки (например libc), от коротрых зависит RTL. Если этот параметр не указан в fpc.cfg, то необходимо будет передавать непосредственно при сборке проекта.
Заметка: android-14 — это версия Android системы. На лето 2016 года, уже доступна Android-24. Обязательно убедитесь, что вы передаёте путь именно той Android системы, для которой вы хотите скомпилировать проект.
Начиная с Android-21 доступены 64-битные архитектуры. Конфиуграционный файл для них будет выглядеть следующим образом.
(arm64 именеются как aarch64 в FPC)
Компиляция под Андройд
Убедитесь в том, что у вас есть настроенный кросс-компилятор.
Программу под Андрой нужно скомпилировать следующим образом (при том, что кросс-компилятор установлен в C:\Develop\FPC\pp)
Общие Сведения
- При сборке, компилятор не объявляет директиву LINUX для условной компиляции. Вместо этого, обявлены директивы UNIX и ANDROID.
(Android не является полностью Linux-совместимой системой, например некоторые syscalls вызовы и стандртные функции, такие как pthreads отсуствтуют вовсе. Система так же ведёт себя иначе в некоторых случаях, чем Линукс, и количество различий продолжает расти. Чтобы избежать директив условной компиляции, if defined(linux) and not defined(android), используется комбинация UNIX + Android.
- Динамические библиотеки (Shared libraries) не имеют заполненные переменных argc/argv, из-за ограничений Андройд системы.
- Набор доступных библиотек ограничен, тем, что доступно на Андройд платформе.
Источник