OberonCore https://forum.oberoncore.ru/ |
|
Создание файла *.so на Обероне для сборки Андроид приложения https://forum.oberoncore.ru/viewtopic.php?f=47&t=7015 |
Страница 1 из 2 |
Автор: | Артем Запаранюк [ Четверг, 24 Июль, 2025 12:59 ] |
Заголовок сообщения: | Создание файла *.so на Обероне для сборки Андроид приложения |
Добрый день, уважаемые форумчане. Не нашел на форуме инфу о том, как сделать файла *.so на Обероне. Для BlackBox под Linux. Хочу попробовать использовать файл .so для сборки Андроид приложения apk. Файл .so насколько мне известно является библиотекой Linux - аналогом dll Windows. Для андроида необходима компиляция библиотеки .so для архитектуры arm7a 32 bit или arm8 64 bit. Всем известная Delphi тоже создаёт файл *.so когда собирает apk приложение для Андроида. Для запуска библиотеки Delphi добавляет в сборку Андроид приложения apk Java-загрузчик библиотеки .so. И плюсом конечно же манифест и ресурсы. Поэтому я думаю, что по такой же технологии можно собирать Андроид приложение на Обероне. |
Автор: | Oleg N. Cher [ Четверг, 24 Июль, 2025 22:03 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
А у нас есть компиляторы Оберона в ARMv7 и Aarch64, для которых предусмотрен линкер в формат .so? |
Автор: | Артем Запаранюк [ Пятница, 25 Июль, 2025 08:45 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Лично я не нашел. Поэтому и спросил. |
Автор: | Артем Запаранюк [ Пятница, 25 Июль, 2025 12:23 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Я пока не смог понять технологию, по которой Delphi автоматически преобразует программу в библиотеку .so и собирает apk приложение Android. Но по факту так и есть, если открыть apk файл, созданный Delphi, как zip архив. Например, WinRar-ом. |
Автор: | Артем Запаранюк [ Пятница, 25 Июль, 2025 12:45 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
А ещё мне удалось найти проект создания apk приложения Android для программы, которая написана на Lazarus Pascal. Там тоже нужно сначала компилировать библиотеку .so для arm32 и arm64. А потом добавлять эту библиотеку в готовый шаблон apk приложения для Android. Вот ссылка на проект sourceforge.net/p/nativeandroidcamera/code/ci/master/tree/ Здесь также нужно использовать загрузчик библиотеки, который должен быть написан на Java. А для запуска на устройстве Android, внешние функции библиотеки из файла .so должны быть указаны как application.MainActivity в файле манифеста для Android. Для удобства автор проекта создал готовые к использованию bash-скрипты для сборки APK и его подписания. |
Автор: | Артем Запаранюк [ Пятница, 25 Июль, 2025 13:05 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Поэтому, с учетом изложенного, я подумал, что по такой же технологии можно собрать Андроид приложение из программы, которая написана на Обероне. Но не нашел инфу, как сделать из программы на Обероне библиотеку .so для arm-v7 или arm-v8. |
Автор: | Артем Запаранюк [ Пятница, 25 Июль, 2025 18:19 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Нашел на сайте https://blackbox.oberon.org в разделе "Расширения-трансляторы" пакет под названием Транслятор Компонентного Паскаля в Си - CPFront. Снова поискал на форуме и нашел здесь целую ветку про это расширение viewtopic.php?f=163&t=6344 В заголовке темы указана поддержка ARM. Почитал ветку. Насколько я понял трансляция - это не компиляция. Поэтому нужно будет использовать пакет GCC для Arm Android. В результате как мне кажется получить .so файл библиотеки для arm v7a Android вполне реально. Сначала нужно транслировать программу с помощью CPfront на Си. Потом использовать компилятор и линкер из набора GCC для Arm v7a Android. Таким образом у меня остался только такой вопрос - что нужно дополнительно указать в тексте программы на Компонентом Паскале, чтобы после трансляции на Си и обработки пакетом GCC для Arm v7a получить именно библиотеку so, а не исполняемый файл для Android? |
Автор: | Oleg N. Cher [ Суббота, 26 Июль, 2025 04:55 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Я смотрю, Вы не ищете лёгких путей. ![]() Когда-то я пробовал собирать приложение для Андроида на GPCP, но срезался на ошибке в компиляторе (что-то связанное с инициализацией конструкторов) и общей "сырости" GPCP. А править его некому. Притом это была попытка сделать SDK-приложение для Андроида (т.е. Java/JVM/Dalvik-based), а не NDK. Хотя JNI/NDK я тоже рассматривал. А с Java micro edition такой трюк получился. Впрочем, приложение было не особо сложное. Но это долбанная возня, надо было серьёзно разобраться с тем, как при помощи утилит из JDK получить .jar-файл, как верифицировать приложение, как подписать и так далее. Вы точно хотите в этом барахтаться? Артем Запаранюк писал(а): Нашел на сайте https://blackbox.oberon.org Когда я портировал BlackBox на ARMv7, пользовался именно CPfront. Инструмент хороший, хотя и сыроватый, но даден OMinc'ами "как есть", за что им огромное спасибо конечно.в разделе "Расширения-трансляторы" пакет под названием Транслятор Компонентного Паскаля в Си - CPFront. Но CPfront не адаптирован под 64-битную разработку. И если его дорабатывать, то надо будет залезть и во фронт-энд (а он использует фронт-энд от BlackBox). Насколько мне известно, что-то в этом направлении сделал Дм. Дагаев (проект Мульти-Оберон), но подробностей не знаю, лучше бы спросить у него самого. Артем Запаранюк писал(а): Снова поискал на форуме и нашел здесь целую ветку про это расширение Верно. И даже 64-битный ARM.В заголовке темы указана поддержка ARM. Но это не расширение, а вполне самостоятельный проект. Артем Запаранюк писал(а): Насколько я понял трансляция - это не компиляция. Именно. Придётся разобраться с опциями вызова Си-компайлера.Поэтому нужно будет использовать пакет GCC для Arm Android. Артем Запаранюк писал(а): В результате как мне кажется получить .so файл библиотеки для arm v7a Android вполне реально. Вполне реально.Артем Запаранюк писал(а): Сначала нужно транслировать программу с помощью CPfront на Си. Потом использовать компилятор и линкер из набора GCC для Arm v7a Android. Можете конечно и через CPfront, но Вы уверены, что справитесь? Тут сразу надо заметить, что сейчас Андроиды вполне уже 64-битные. Так что я бы советовал Ofront+, который создан на базе Ofront, CPfront и BlackBox. И поддерживает 64-битную разработку.Артем Запаранюк писал(а): Таким образом у меня остался только такой вопрос - что нужно дополнительно указать в тексте программы на Компонентом Паскале, чтобы после трансляции на Си и обработки пакетом GCC для Arm v7a получить именно библиотеку so, а не исполняемый файл для Android? Вас интересуют именно опции компиляции?Тут будет много сложностей помимо них. Во-первых, надо понять что из себя будет представлять эта библиотека .so Вы точно хотите использовать все возможности Оберона/КП и включить туда системные вызовы и сборщик мусора? Может часть ядра? Или попробуете обойтись без NEW и сборки мусора? (Что будет гораздо проще). В поставке Ofront+ есть пример сборки простой DLL/SO, можно плясать оттуда. Там же есть и опции GCC для сборки библиотеки. Код: CC="cc -Os -g0 -fvisibility=hidden -fomit-frame-pointer -finline-small-functions -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -Wl,--gc-sections" $CC MyDLL.c -fPIC -shared -oMyDLL.so Это самый простой и минимальный вариант сборки, но там будет ещё масса тонкостей, например: переназначать ли имена вида "Module_Proc" в "Proc"? И так далее. В общем, тут надо много времени потратить, чтобы разобраться. Если хотите, я помогу, но может всё же лучше Android SDK? Или сразу Dart/Flutter берите, чтобы не морочиться. Я серьёзно. |
Автор: | Артем Запаранюк [ Суббота, 26 Июль, 2025 15:30 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Большое спасибо за развернутый и подробный ответ. И отдельно - за пример библиотеки и код для трансляции. Тем самым Вы уже оказали мне существенную помощь. Потому что у меня в планах было взять из примеров Help-a BlackBox-а проект калькулятора. И попробовать создать из него библиотеку .so для arm Android. Проект калькулятора, как мне кажется, можно считать вполне стандартным GUI приложением для Андроид, потому что есть визуальные компоненты - форма, на которой есть управляющие элементы-кнопки, а также дисплей для ввода-вывода информации. Плюс предусмотрена обработка событий нажатий на кнопки, ввода данных, плюс алгоритмы расчета с выводом визуального результата. Поэтому Ваш ответ с примерами кода мне очень поможет. Использовать для вновь созданной библиотеки .so я планирую пример apk приложения Андроид для Lazarus Pascal, о котором я написал пост выше. Поэтому названия экспортируемых функций в проекте калькулятора я укажу такие же как в примере Lazarus Pascal. Потому что на них уже заряжен и манифест и Java-загрузчик в шаблоне apk. Таким образом, на примере калькулятора лично для меня станет понятно, какие графические библиотеки нужно будет добавить в Apk приложение Андроида. |
Автор: | Oleg N. Cher [ Суббота, 26 Июль, 2025 16:56 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Совсем не уверен, что помог Вам хоть как-то. Но, как говорил один мой знакомый: "всецело завидую Вашему энтузиазму" ![]() Артем Запаранюк писал(а): Потому что у меня в планах было взять из примеров Help-a BlackBox-а проект калькулятора. И попробовать создать из него библиотеку .so для arm Android. Дело в том, что у BlackBox свой графический фреймворк, который сильно отличается от способа построения GUI в Андроиде. Ваша задача получить калькулятор из BlackBox на Андроиде сводится по сути к портированию всего BlackBox под Android и запуска под ним калькулятора, потому что калькулятор потянет большинство модулей BlackBox. Калькулятор в BlackBox нельзя отделить от BlackBox.Вы же понимаете, что BlackBox для Windows с его 32-битным компилятором для Ваших целей практически бесполезен? Вам понадобится BlackBox для Linux. Вероятно, в качестве базы подойдёт BlackBox для Linux x86, который сейчас курирует Иван Денисов. Но этот проект не готов для работы под 64 бита. В общем, путь Вы выбрали сложный и несколько неестественный. Но удачи, вдруг что-то получится. Объём работ по разворачиванию калькулятора на Андроид нахожу весьма серьёзным. |
Автор: | Артем Запаранюк [ Воскресенье, 27 Июль, 2025 08:29 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Я нашел статью о том, как собрать apk приложение Андройд с помощью транслятора Oberon-07. Вот ссылка. https://vostok-space.blogspot.com/2018/ ... d.html?m=1 В примерах создания apk приложения отрисовка графики построена на использовании API Android из пакета android.graphics. Вот ссылка на примеры на гитхабе https://github.com/Vostok-space/vostok Насколько я понял, причина в том что BlackBox опирается на графику GTK, но Андроид не поддерживает такую графику. Поэтому согласен с Вами. Объем работ по отрисовке для Андроида визуальных элементов калькулятора действительно значительный. |
Автор: | Артем Запаранюк [ Воскресенье, 27 Июль, 2025 11:37 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
А ещё, как мне кажется, Вы уже также помогли своим сообщением на форуме о том, как сделать java midlet, используя Gardens Point Component Pascal. Вот ссылка viewtopic.php?f=117&t=4170 Я нашел статью о том, как преобразовать java midlet, чтобы создать apk приложение Android. Вот по этой ссылке: https://microemu.blogspot.com/2009/08/c ... o.html?m=1 Планирую выяснить более подробно о возможностях графики, которая используется в java midlet-ах. Оберон-07 может переводить на Java. Поэтому можно попробовать собрать Java midlet. И дальше преобразовать этот мидлет в apk приложение. |
Автор: | Артем Запаранюк [ Воскресенье, 27 Июль, 2025 12:22 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Ну, а если возможности графики java midlet-ов окажутся недостаточными для полноценного GUI приложения Андроид, то можно изучить возможности плагина Gardens Point Component Pascal для Visual Studio и Eclipse. По данным википедии Компонентный Паскаль был интегрирован в Visual Studio[11] и в межплатформенную среду разработки Eclipse[11]. Вот ссылка https://ru.m.wikipedia.org/wiki/Компонентный_Паскаль Думаю, что эти плагины могут использовать возможности других расширений внутри IDE Visual Studio, Eclipse. Включая графические библиотеки и пакеты. |
Автор: | Sergej Durmanov [ Вторник, 05 Август, 2025 17:00 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Если что, то есть ECS Oberon-2 с поддержкой arm https://ecs.openbrace.org/ |
Автор: | Артем Запаранюк [ Среда, 06 Август, 2025 09:22 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Sergej Durmanov писал(а): Если что, то есть ECS Oberon-2 с поддержкой arm https://ecs.openbrace.org/ Перешёл по ссылке. Прочитал. Мне понравилось. Особенно вот этот п.7.7.14 https://ecs.openbrace.org/manual/manual ... 00007.7.14 Спасибо! Я уже получил в этой ветке замечание, что ищу сложные и неестественные пути. Поэтому я решил поискать пути попроще. Которые соответствуют идеям профессора Вирта. И в теории, и на практике. Ваше предложение, тогда, будет у меня за номером 3. Потому что первые 2 у меня такие: 1. Сделать руками файлы, которые указаны в параграфе "Описание" на сайте Wiki.Oberon Вот ссылка. https://wiki.oberon.org/blackbox/dev 2. Использовать Active Oberon. Чтобы собрать компилятор BB для ARM. И затем полученным компилятором собрать весь BB для ARM. Либо отдельные модули компилировать и линковать в библиотеку .so для Андроида. Ещё раз Вам спасибо! |
Автор: | Oleg N. Cher [ Среда, 06 Август, 2025 14:38 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Артем Запаранюк писал(а): 2. Использовать Active Oberon. Собрать компилятор ББ, чтобы он по-прежнему генерил код для x86, но работал на хост-архитектуре ARM? А что это даст? Пусть лучше он генерит ARM-код, а работает по-прежнему под ББ. Давайте, Вы же сказали, что это легко. Всего-навсего поменять команды x86 на ARM. Делов-то.Чтобы собрать компилятор BB для ARM. Артем Запаранюк писал(а): И затем полученным компилятором собрать весь BB для ARM. Как-то у Вас всё слишком просто. Сразу видно, что никогда таким не занимались.Артем Запаранюк писал(а): Либо отдельные модули компилировать и линковать в библиотеку .so для Андроида. Вот это уже реальнее, чтобы не за стопицот лет. Через Си. Но ладно, способ спорный.Действуйте! ![]() |
Автор: | Артем Запаранюк [ Среда, 06 Август, 2025 16:28 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Артем Запаранюк писал(а): 2. Использовать Active Oberon. Чтобы собрать компилятор BB для ARM. Цитата: Собрать компилятор ББ, чтобы он по-прежнему генерил код для x86, но работал на хост-архитектуре ARM? Почему Вы так решили? В Active Oberon есть версия Oberon для Arm. Артем Запаранюк писал(а): И затем полученным компилятором собрать весь BB для ARM. Цитата: Как-то у Вас всё слишком просто. Сразу видно, что никогда таким не занимались. Вот поэтому, профессор Вирт и делал простые компиляторы. Чтобы любой дурак мог собрать компилятор Pascal на то железо, которое есть в наличии. Это я про себя сейчас. И ещё про тех, кто сразу же после выхода первой версии языка программирования Pascal упрашивал профессора сделать компилятор под их железо. Уже тогда железо было у всех разное. По принципу - кто и что смог спаять. И ОС-ы также. Цитата: Действуйте! ![]() Пока не могу. Причины я уже указал в посте по теме Перспективы BB. |
Автор: | Oleg N. Cher [ Среда, 06 Август, 2025 16:53 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Артем Запаранюк писал(а): Почему Вы так решили? Видите ли, одно дело портировать на ARM тот же самый компилятор, который сейчас есть для x86. Что не даст никакого проку. Хотя задача вполне посильная и даже не очень сложная. Или же перенацелить кодогенерацию на ARM, т.е. чтобы компилятор вместо команд x86 генерировал команды ARM. Тут задача на несколько порядков сложнее.Артем Запаранюк писал(а): В Active Oberon есть версия Oberon для Arm. Как это поможет Вам переносить BlackBox? Опишите хотя бы в виде простого списка последовательность действий.Артем Запаранюк писал(а): Вот поэтому, профессор Вирт и делал простые компиляторы. Это понятно. Профессор Вирт действовал как самурай, т.е. бился там, где стоял. И решал свои задачи. Но лично я против простых компиляторов, потому что они дают плохой или ужасный код. Это не значит, что я не одобряю деятельность Вирта, просто каждому своё.Артем Запаранюк писал(а): Пока не могу. Причины я уже указал в посте по теме Перспективы BB. Ну понятно, понятно. Сообщество не сделало, а самому некогда.Всё не так легко и плёво, как Вам кажется, уважаемый Артём. Когда (если) займётесь — поймёте сами. Если бы мы могли — уже бы сделали. |
Автор: | Артем Запаранюк [ Среда, 06 Август, 2025 17:59 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Артем Запаранюк писал(а): В Active Oberon есть версия Oberon для Arm. Цитата: Как это поможет Вам переносить BlackBox? Опишите хотя бы в виде простого списка последовательность действий. Через Oberon для Arm прогнать компилятор+исходники BB в бинарном формате odc. На выходе кодогенерация будет под Arm. Исполняемый файлы тоже будут для запуска на Arm. Этот вариант, чтобы руками не менять платформу в исходниках компилятора. |
Автор: | Oleg N. Cher [ Среда, 06 Август, 2025 18:28 ] |
Заголовок сообщения: | Re: Создание файла *.so на Обероне для сборки Андроид прилож |
Артем Запаранюк писал(а): Через Oberon для Arm прогнать компилятор+исходники BB в бинарном формате odc. Ничего, что AO не понимает формата odc? И ничего, что в ББ язык КП, а не AO? Понимаю. Это мелочи, выеденного яйца не стоят.Артем Запаранюк писал(а): На выходе кодогенерация будет под Arm. С чего бы? Её кто-то перепишет? (хинт: она осталась в AO)Артем Запаранюк писал(а): Исполняемый файлы тоже будут для запуска на Arm. А, ну-ну.Этот вариант, чтобы руками не менять платформу в исходниках компилятора. Ну вот Вы пришли на форум, намекаете на наши некомпетенции и рассказываете как всё просто, как два пальца, Вы бы сам уже давно сделали, да времени нет. Реакция? Предсказуема. Знаете, Артём, люди делятся на две категории. Кто-то умеет и делает, а кто-то мечтает и у него мама — бывший СНС ИММ УрО РАН. Не заблуждайтесь насчёт простоты. То, что Вам сейчас кажется простым, не такое уж простое. Без обид. Устраняюсь от разговора. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |