Страницы

пятница, 14 сентября 2018 г.

Android

На днях cделал прототип сборщика простых приложений Android, написанных на Oberon. Работает он только под Ubuntu 18.04, так как в этой версии есть возможность установки Android SDK из стандартного репозитория, что позволяет легко ссылаться на нужные файлы без дополнительных действий.

Получить исполняемый файл сборщика можно из каталога транслятора командой:

 $ result/ost to-bin AndroidBuild.Go result/osa -infr . -m source 

При вызове

 $ result/osa install-tools 
сборщик выдаст команду, которую нужно выполнить для установки утилит, достаточных для сборки Android приложений с помощью него.

Apk файл для Android 2.3 можно собрать командой build:

 $ result/osa build ColorCells.Go result/cells.apk -infr . -m example/android 

Можно и сразу запустить приложение на телефоне:

 $ result/osa run ColorCells.Go -infr . -m example/android 
Данный пример создаёт такую картинку:

Второй пример создаёт приложение, рисующее звезду, количество лучей которой настраивается при сборке:

 $ result/osa run 'Star.Go(5, 0.38)' -infr . -m example/android 

Обёртки API Андроид, предоставляющие в Обероне доступ к возможностям мобильной ОС существенно неполны, по сути, являясь минимальными обвязками для указанных выше примеров.

К звёздам!
$ result/osa run Rocket.Fly -infr . -m example/android


Обновление - cборка на самом Android.

13 комментариев:

  1. Ништяк. Радуешь, Комдив!)) Так держать)))

    ОтветитьУдалить
  2. "Дорогие друзья,напишите по-русски,что качать,куда устанавливать,а то я не совсем программист,точнее совсем не программист..."

    Состояние проекта такое, что рассчитано, всё-таки, на программистов, например, сборка для Android - это хотя и вполне рабочий, но концепт.
    Исходный код транслятора вместе с описанными в заметке примерами доступен на github - https://github.com/Vostok-space/vostok/blob/master/README-RU.md
    Проще всего получить работоспособную среду можно воспользовавшись репозиторием для Ubuntu/Mint/Debian - https://wiki.oberon.org/repo . Тогда установить сборщик Android приложений можно будет командой /usr/bin/sudo apt install osa
    Пообщаться можно в https://chat.oberon.org/channel/vostok https://forum.oberoncore.ru/viewtopic.php?f=115&t=6217 https://t.me/oberon_vostok

    ОтветитьУдалить
  3. А возможно ли с помощью данного сборщика получить java-class-ы, чтобы собрать Java midlet?

    С целью чтобы потом упаковать этот midlet в apk для Андроида.

    Вот статья об этом.
    Вот по этой ссылке:
    https://microemu.blogspot.com/2009/08/converting-javame-applications-to.html?m=1

    ОтветитьУдалить
    Ответы
    1. Получить .class-ы, чтобы собрать из них другими средствами Java Midlet можно, но делать это для того, чтобы потом всё равно преобразовать его в apk, немного бессмысленно, потому что легче делать apk напрямую. Чем интересен более длинный путь через Java Midlet?

      Удалить
    2. Насколько я понимаю в Java midlet-ах можно использовать готовые графические модули для Андроида и некоторые элементы управления.

      В этом случае можно попробовать создавать программы на Component Pascal, у которых GUI интерфейс будет более разнообразным.

      И будет приближаться к стандартному GUI обычного приложения Андроид - с кнопками, меню и т.д.

      Без ручной отрисовки каждого элемента.

      Для теста, например, можно взять пример калькулятора из BlackBox.
      Потому что там есть кнопки, обработка событий нажатия на них и дисплей для ввода-вывода результатов работы алгоритмов.

      Как в стандартном шаблоне для apk приложения в Android Studio.

      Удалить
    3. Конечно в идеале было бы вообще отлично подтянуть через расширение палитру компонентов из Android Studio. Чтобы создавать из GUI интерфейс. С обработкой событий на языке Component Pascal. И дальнейшей сборкой Apk. Как например сделано в расширении для Lazarus IDE. Называется оно LAMW. Вот ссылка https://github.com/jmpessoa/lazandroidmodulewizard?ysclid=mdlzu0xsph84853943

      Удалить
    4. Так ведь готовые графические модули для Android можно использовать напрямую в apk, не прибегая к сборке через Java MIDlet. MicroEmulator нужен исключительно для портирования уже написанных MIDlet'ов, а не для создания кода с начала.

      Удалить
  4. Но пока, для начала, я думаю хватит и графических возможностей Java midlet-а.

    Хотя бы не будет ручной отрисовки компонентов библиотеки GTK.

    На которой базируется пример калькулятора из BlackBox-а.
    И, как мне кажется, данный путь хоть и более длинный, но при этом более понятный и быстрый. Потому что возможностей транслятора на этот путь вроде уже хватает. Если транслятор сможет выразить графику GTK в Java class-ы. Хотя могу ошибаться. Надеюсь получить Ваш ответ по данной теме.

    ОтветитьУдалить
    Ответы
    1. Статью про MicroEmulator привел только как подтверждение о том, что можно преобразовать Java midlet в Apk приложение Андроид. И в качестве возможного пути такого преобразования. Не единственного, конечно. Есть и другие.

      Удалить
    2. Да, согласен с тем, что готовые графические модули для Android можно использовать напрямую в apk. Но вручную это делать не удобно. Без визуального контроля. Поэтому в идеале конечно было здорово как то эти модули визуализировать.

      Удалить
    3. Поэтому если идти от BlackBox-а, то в нем уже видно визуально все составляющие калькулятора. Но они основаны на библиотеке GTK, которую напрямую не поддерживает Android.
      Поэтому я и решил, что быстрее и понятнее было бы выразить для начала на Java все графические компоненты, которые уже есть в BlackBox-е и которыми в нем же можно манипулировать - составлять наглядный GUI интерфейс нового приложения для Андроид.

      Удалить
    4. 0. Пример калькулятора в BlackBox завязан исключительно на каркас BlackBox и не привязан к GTK. В Windows используется WinAPI, а пример калькулятора не требует даже перекомпиляции при работе BlackBox поверх разных API.

      1. Путь через JavaME более длинный в том же смысле, что и менее понятный и быстрый.

      2. Транслятор Восток не связан с BlackBox и имеет минимум общего API. Даже входной язык — не Компонентный Паскаль, а обычный Оберон. И для Android нет большого смысла в повторении каркаса BlackBox

      Удалить
    5. Все ясно. Благодарю. Я все понял.

      Удалить