Sign in Join
Wiki copytemporary

Android/ru

English · Español · Français · Polski · Русский

(Android only)

Андроид это операционная система основанная на модифицированном ядре Linux, а так же имеющая собственную виртуальную машин Dalvick, основанную на Java. Free Pascal даёт возможность разрабатывать программы для Андроид как нативные (для определённого вида процессора на котором работает операционная система), так и для виртуальной машины.

Компоненты

Большинство функционала Андроид системы, доступны через Java компоненты. FreePascal поддерживает компиляцию в Javacode. Для разработки таки приложений требуется установить Android SDK.

Некоторым приложениям, достаточно использовать только фунционал доступный через нативные Андроид (например игры). Для разработки таких приложений требуется установить Android NDK. Но для интеграции с графической средой системы придётся так же установить и Android SDK. Так же потребуется кросс-компилятор для нативной Андроид системы.

Lazarus

Для Lazarus доступен ряд компонентов, для разработки графический приложений под Андроид:

Андроид среда

Версии Системы, SDK, NDK

Новые версии системы Андройд выходят регулярно. Так же обновляются версии SDK и NDK, так же известный как API версия. Нумерация идёт паралельно, но при выпуске новой версии Андрой системы, обычно увеличивается номер API версии. При обновлении подверсии системы Андроид, API версия может не поменяться.

Например, Android 5.x, использовал несколько номеров API версий 21 и 22 Тогда как, Android 6.x, использовал только одну API версию: 23

Необходимо различать номер системы и номер API.

Подробнее можно прочитать в истории версий Андроида

Загрузка Приложений

Есть несколько способов загрузить приложения на Андроид:

Кросс-компилятор

Андройд платформы

Поддержка Андройд платформы официально добавлена начиная с версии FPC 3.0.

Поддерживаемые CPU:

ARM (CPU_TARGET=arm)

x86 (CPU_TARGET=i386)

MIPS (CPU_TARGET=mipsel)

ARM64 (CPU_TARGET=aarch64) (на лето 2016, доступен только в trunk)

JVM (не рассматривается на этой странице)

Android NDK

Независимо от того, устанавливаете ли вы FPC из официального дистрибутива, или компилируете из исходников, вам необходимо установить Android NDK. NDK требуется для сборки кросс-компилятора, а также RTL и FCL библиотек.

Скачайте NDK с этого сайта: http://developer.android.com/tools/sdk/ndk/index.html

После чего распакуйте в любую директорию.

Установка из дистрибутива

Начиная с версии FPC 3.0, компилятор распространяется с подготовленным кросс-компилятором и подготовленными RTL и FCL пакетами для Win32 системы.

1. Скачайте дистрибутив с офицаильной Sourceforge странички проекта

2. Во время установки, дистрибутив потребует указать папку, в которой распакован NDK

Указанный путь будет использован для обновления конфигурационного файла, чтобы указать на андройд инструментарий

pascal
# --- Android NDK config begin ---

#ifdef android
 #ifdef cpuarm
   -FlC:\ndk\android-ndk-r11c\platforms\android-9\arch-arm\usr\lib
   -FDC:\ndk\android-ndk-r11c\toolchains\arm-linux-androideabi-4.9\prebuilt\windows\bin
 #endif
 #ifdef cpu386
   -FlC:\ndk\android-ndk-r11c\platforms\android-9\arch-x86\usr\lib
   -FDC:\ndk\android-ndk-r11c\toolchains\x86-4.9\prebuilt\windows\bin
 #endif
 #ifdef cpumips32
   -FlC:\ndk\android-ndk-r11c\platforms\android-9\arch-mips\usr\lib
   -FDC:\ndk\android-ndk-r11c\toolchains\mipsel-linux-android-4.9\prebuilt\windows\bin
 #endif
#endif

# --- Android NDK config end ---

3. Дистрибутив кросс-комплиятора можно устанавливать поверх ранее установленных дистрибутивов FPC (например win32, win32-arm, win32-win64).

Сборка кросскомпилятора из исходников

Получите последнюю версию исходников

Получите последнюю версию исходников из SVN репозитория.

Это можно сделать с помощью следующей командной строки

bash
svn co http://svn.freepascal.org/svn/fpc/trunk fpcsrc

Процесс загрузки исходников может занять некоторое время. По-завершению исходники будут находится в директории "fpcsrc".

Сборка кросс-компилятора

На лето 2016 - для сборки fpc-trunk, необходима рабочая версия комплятора FPC 3.0.0. (Общее правило: trunk всегда должен собираться, последним официально выпущеной версией FPC компилятора. Официальная версия всегда доступна в дистрибутиве, и её установка и использование не должно вызывать проблем)

В качестве примера, исползуется сборка arm-android кросс-компилятора в Windows. Однако процесс сборки для других систем - идентичен. (Единственное что необходимо менять, это путь к файлам, а так же использование команды "sudo" при копировании комплиятора в системные папки для unix систем)

Сборка кросс-компилтяора для i386-android, mips-android происходит по аналогичной схеме.

Предположим, что используются следующие директории (папки)

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. Компиляция

2.1 Откройте командную строку и перейдите в папку с исходниками fpc:

bash
 cd C:\Develop\FPC\fpcsrc

2.2 Запустите следующую команду:

bash
 make clean crossall crossinstall OS_TARGET=android CPU_TARGET=arm INSTALL_PREFIX=C:\Develop\FPC\pp

Заметка: INSTALL_PREFIX - указывает пусть установки кросс-компилятора. Если он не указан, то установка произойдёт в путь, по-умолчанию. На unix-системах, это системная папка. Запись в неё, скорей всего, потребует прав супер пользователя, и должна быть использована команда sudo.

По завершению выполнения команды, собранный кросс-компилятор (а также RTL и FCL) будут установлены и доступны в C:\Develop\FPC\pp. По-умолчанию, компиляция происходит с:

Если нужны другие настройки компилятора, но их можно передать с помощью параметра CROSSOPT.

Например, если нужно собрать с поддержкой аппаратного FPU и поддержкой инструкций ARMv7a, следует использовать следующу команду:

bash
  make clean crossall crossinstall OS_TARGET=android CPU_TARGET=arm CROSSOPT="-Cparmv7a -Cfvfpv3" INSTALL_PREFIX=C:\Develop\FPC\pp

3. Настройка

В папке, куда был установлен кросс-компилятор C:\Develop\FPC\pp\bin\i386-win32, был помещён файл конфигурации fpc.cfg. Его нужно отредактировать и добавить следующий текст

text
-FuC:\Develop\FPC\pp\units\$FPCTARGET*
pascal
#ifdef android
#ifdef cpuarm
 -FlC:\Program Files\Android SDK\android-ndk-r8d\platforms\android-14\arch-arm\usr\lib
#endif
#ifdef cpu386
 -FlC:\Program Files\Android SDK\android-ndk-r8d\platforms\android-14\arch-x86\usr\lib
#endif
#endif

Параметр -Fl, указывает на стандартные системные библиотеки (например libc), от коротрых зависит RTL. Если этот параметр не указан в fpc.cfg, то необходимо будет передавать непосредственно при сборке проекта.

Заметка: android-14 - это версия Android системы. На лето 2016 года, уже доступна Android-24. Обязательно убедитесь, что вы передаёте путь именно той Android системы, для которой вы хотите скомпилировать проект.

Начиная с Android-21 доступены 64-битные архитектуры. Конфиуграционный файл для них будет выглядеть следующим образом.

pascal
#ifdef android
#ifdef cpuaarch64
 -FlC:\Program Files\Android SDK\android-ndk-r11c\platforms\android-21\arch-arm64\usr\lib
#endif
#ifdef cpux86_64
 -FlC:\Program Files\Android SDK\android-ndk-r11c\platforms\android-21\arch-x86_64\usr\lib
#endif
#endif

(arm64 именеются как aarch64 в FPC)

Компиляция под Андройд

Убедитесь в том, что у вас есть настроенный кросс-компилятор.

Программу под Андрой нужно скомпилировать следующим образом (при том, что кросс-компилятор установлен в C:\Develop\FPC\pp)

text
 C:\Develop\FPC\pp\bin\i386-win32\ppcrossarm -Tandroid testprog.pas

Общие Сведения

(Android не является полностью Linux-совместимой системой, например некоторые syscalls вызовы и стандртные функции, такие как pthreads отсуствтуют вовсе. Система так же ведёт себя иначе в некоторых случаях, чем Линукс, и количество различий продолжает расти. Чтобы избежать директив условной компиляции, if defined(linux) and not defined(android), используется комбинация UNIX + Android.

Известные Проблемы

Поддержка PIC для Android была добавлена лишь в FPC 3.1.1 (trunk).

Если вам необходимо собирать проект для системы Android 5.0 (или поздней), вам необходимо собрать кросс-компилятор из исходников.

Заметка: FPC 3.1.1 (trunk) включает по-умолчанию PIC-совместимость для компилируемых библиотек и исходников под Андройд. PIC-совместимые библиотеки работают на любой версии Андройда (тестировалось даже на версии Android 1.5). Но PIC-совместимые исполняемые файлы работают только на Андродй 4.1+. Чтобы запускать программу на ранних версиях Андройда, необходимо принудительно отключать PIC-совместимость, передавая параметр -Cg- при компиляции.

См. также

Внешние ссылки


From the Free Pascal wiki, page "Android/ru", as it stood on 2018-05-21 after a change by Useroflazarus, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 4, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.