HDroidGUI

Короткое введение

Это фреймворк для Андроид, инструмент, предназначенный для того, чтобы писать на Harbour приложения для Андроид-устройств - точно так же, как HwGUI позволяет писать на Harbour GUI приложения для Windows и Linux. Я даже думал о нем сначала, как об HwGUI для Андроид, но по ходу решил, что лучше отказаться от мысли обеспечить совместимость на уровне prg с приложениями под другие ОС - слишком специфична и платформа, и интерфейс, и характер устройств, на которых используется Андроид. Взять хотя бы размер мобильных устройств, который, кстати, вряд ли будет существенно меняться по мере развития технического прогресса - добавят туда нормальную клавиатуру или увеличат вдвое экран - и устройство просто перестанет быть мобильным. Так вот, представьте, как на таком устройстве будет выглядеть привычное десктопное приложение с кучей виджетов... Понятно, что интерфейс приложения придется переписывать под стандарты мобильных устройств. А если так, то зачем держаться за полную совместимость с GUI - библиотеками для Windows и Linux ? Код приложений, использующих HDroidGUI, в той их части, которая отвечает за интерфейс, будет отличаться от кода HwGUI приложений, хотя я стараюсь использовать максимально похожий синтаксис.

С чего начать ?

Инструменты, которые вам надо скачать и установить перед тем, как начать пользоваться HDroidGUI, перечислены в разделе "Андроид".

Скачиваем HDroidGUI отсюда или с репозитория на Github, распаковываем и смотрим, что там внутри.

А внутри там:

  • buildall.bat, buildall.sh - командные скрипты для кросс-компиляции всего фреймворка, bat - если вы делаете это на Windows, sh - если на Linux.
  • clear.bat, clear.sh - командные скрипты для удаления результатов компиляции.
  • comp.bat, comp.sh - командные скрипты для компиляции Java - кода фреймворка.
  • ndkBuild.bat, ndkbuild.sh - командные скрипты для компиляции C и Harbour - кода фреймворка.
  • setenv.bat, setenv.sh - командные скрипты, устанавливающие переменные окружения для компиляции фреймворка, вы должны отредактировать их - прописать пути, какие они есть в вашей системе.
  • jni/Android.mk, jni/Application.mk - make-файлы для сборки динамических библиотек (so) - "нативной" части фреймворка.
  • jni/libharbour.so - динамическая библиотека Harbour, используемая для создания динамических библиотек "нативной" части фреймворка.
  • static/jni/Android.mk, static/jni/Application.mk - make-файлы для сборки статической библиотеки "нативной" части фреймворка.
  • src/ - каталог для исходных файлов фреймворка.
  • src/include/* - заголовочные файлы для Harbour-кода.
  • src/prg/* - Harbour и C исходники.
  • src/su/harbour/hDroidGUI/* - Java исходники.
  • utils/newproject.prg - исходный файл утилиты для создания нового проекта.

Первым делом правим setenv.bat ( или setenv.sh, если у вас - Линукс ), прописывая там свои пути и запускаем buildall.bat ( или buildall.sh ) - HDriudGUI должен быть скомпилирован - в противном случае будут выданы сообщения о проблемах.

Хочу обратить ваше внимание на входящую в дистрибутив динамическую библиотеку jni/libharbour.so. Я включил в нее практически все Харбор-модули кроме тех, что отвечают за консольный ввод/вывод и нескольких кодовых страниц плюс Letodb RDD. Скрипты для построения библиотеки лежат в репозитории на Github, вы можете при желании включить туда что-нибудь еще и перестроить libharbour.so. Вам может это понадобиться и в случае, если вы захотите воспользоваться самой последней версией Харбор.

В результате компиляции у вас должны появиться следующие файлы:

Теперь мы готовы к тому, чтобы создать свое первое приложение под Андроид на Харборе. Для этого нам надо создать новый каталог с проектом, где будет все необходимое для последующей сборки apk - и AndroidManifest.xml, и Java-исходники, и командные скрипты для сборки, и make-файлы для сборки динамических библиотек, входящих в состав пакета - да, с Java и Андроид все не так просто, как с простым Harbour-приложением. Но, к счастью :), у нас есть специальная утилита, входящая в состав HDroidGUI - уже упоминавший здесь utils/newproject.prg - вам надо откомпилировать его с помощью Харбора или даже просто запустить с необходимыми параметрами с помощью hbrun.

Создаем свой проект для Андроид:

       newproject [-hrb] [-path=PATHtoHDROIDGUI] [-pass=cPassword] cFullPackageName
    

Начнем разбор параметров с конца:

cFullPackageName - полное имя нашего приложения.
В Java для обеспечения уникальности имен классов и методов принято помещать их в пакеты. Пакет - это такой контейнер, который используется для изоляции имен классов, во избежание возможных конфликтов с другими классами с такими же именами. Имена пакетам для обеспечения их уникальности принято присваивать в соответствии с именами ваших доменов ( доменов вашего сайта ), причем указываются они в обратном порядке. Так, если ваш сайт - www.zzz.org, а приложение называется MyApp, то полное имя пакета рекомендуется указать как org.zzz.MyApp. При этом Java - исходники должны быть размещены в каталоге src/org/zzz/MyApp/. Поэтому важно указать именно полное имя приложения. Если там не будет хотя бы одной точки, newproject откажется создавать проект.
-pass=cPassword - пароль для подписи apk.
Каждый apk должен быть подписан, поэтому надо указать пароль для подписи - newproject включит ее в командный скрипт, который он создаст. Если вы не укажете пароль в командной строке newproject, утилита попросит вас ввести его при старте.
[-path=PATHtoHDROIDGUI] - полный путь к HDroidGUI.
Для компиляции вашего приложения и создания apk необходим HDroidGUI, поэтому надо указать newproject, где он находится, чтобы включить этот путь в создаваемый командный скрипт ( setenv.bat, setenv.sh ). Если вы не укажете его в командной строке newproject, утилита попросит вас ввести его при старте.
[-hrb] - тип проекта.
HDroidGUI позволяет создать проект двух типов:
  1. prg-файл компилируется в hrb.
  2. prg-файлы компилируются обычным образом - в объектные файлы и собираются в бинарник.

В первом случае скомпилированный hrb копируется в каталог asset/ apk - пакета, а при старте программы копируется из asset/ в домашний каталог приложения на Андроид-устройстве и запускается - точно так, как это сделано в h4aFirstApp - моей первой попытке создать Харбор-приложение для Андроид. Особых преимуществ этого типа проекта я не вижу, разве что он быстрее и проще собирается и, возможно, может быть удобнее для маленьких приложений. Чтобы задать такой тип проекта, укажите в командной строке параметр -hrb.

Второй вариант - вариант по умолчанию. Весь ваш Харбор-код собирается в бинарный модуль - динамическую библиотеку libh4droid.so, включаемую в состав apk. Если вам, как и мне, нравится использовать hrb-файлы, вы можете это делать и при этом варианте - никто не мешает вам создавать hrb во время исполнения программы, или скачивать заранее подготовленнные из вашего веб-хранилища.

Итак, запустив newproject org.zzz.MyApp и указав по ходу исполнения утилиты путь к HDroidGUI и пароль для подписи пакета, мы получим каталог MyApp с таким содержимым:

Теперь можно начинать писать программу. Главный исходный файл может носить любое название, не обязятельно main.prg - но если вы его измените, не забудьте отредактировать build.bat(build.sh) - то же самое в случае, если вы добавите новые файлы в свой проект.

Еще надо бы изучить команды и классы HDroidGUI. Пока описание не готово, смотрите текст примера HdCalcul и prg - исходников HDroidGUI.




Комментариев:       ()       пред.    след.       Добавить комментарий
Длина комментария - не больше 4000 символов.
Ваше имя:

Адрес электронной почты:
(не предназначено к показу)
 
Введите текст с картинки: