Russian Qt Forum
Ноябрь 23, 2024, 03:50
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Уроки и статьи
(Модератор:
xintrea
) >
О кросскомпиляции библиотеки Qt 4.8.6 для ARM
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: О кросскомпиляции библиотеки Qt 4.8.6 для ARM (Прочитано 10270 раз)
ingwarsmith
Новичок
Offline
Сообщений: 10
О кросскомпиляции библиотеки Qt 4.8.6 для ARM
«
:
Июнь 14, 2016, 04:42 »
В прилагаемом PDF-файле описаны действия, произведенные над некоторыми файлами исходников Qt 4.8.6 с целью успешной кросскомпилятивной сборки некоторых библиотек фреймворка (модули Core, Network, Sql) для архитектуры ARMv7-a.
Выбор отдельных модулей из фреймворка Qt4 обусловлен необходимостью решения конкретной задачи:
создание приложения Android/ARM для работы с удаленной БД под управлением MySQL через протокол интернета.
Надеюсь, кому-то будет полезно.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM
«
Ответ #1 :
Июнь 14, 2016, 14:53 »
А чё всякие там Нецеситас (или как его там нынче) не рулят?
Записан
Юра.
ingwarsmith
Новичок
Offline
Сообщений: 10
Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM
«
Ответ #2 :
Июнь 14, 2016, 20:53 »
Не спорю, рулят. Necessitas сам по себе, правда, поддерживает версию Qt максимум 4.5 (если верно помню), свой QtCreator и "свой" Android NDK (тоже старые) - проект не развивается. Сейчас хорошая связка есть для Андроида с Qt5.
В
моем случае
было интересно адаптировать Qt 4.8.6 под ARMv7-a (на устройствах под управлением ОС Android) в связке с современным Android SDK/NDK, чтоб кросс-компилить компоненты (библиотечные файлы) с динамической линковкой, из которых происходят вызовы C++-функций посредством механизма JNI в обычном классе Activity, т.е. БЕЗ использования всяких там NativeActivity, без Ministro и прочих фишек (эти вещи для моей задачи были неудобны). При этом linux-либы под ARM компилились в обычном QtCreator с настроенным профилем компиляции для ARM, а Java-код GUI приложения на Андроид - в Android Studio 2.0
«
Последнее редактирование: Июнь 14, 2016, 20:56 от ingwarsmith
»
Записан
titan83
Гость
Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM
«
Ответ #3 :
Июль 15, 2016, 18:03 »
Друг, подскажи, пожалуйста, такой вопрос: как я понимаю, через JNI реально использовать нативные функции Android? У меня просто давняя задачка была на андроиде поработать с MSSQL, а мой любимый Qt5 из доступных драйверов БД под андроидом предлагает только sqlite.
Я нативно, под джайвой, подключался к серверу MSSQL.
Т.е. я бы хотел писать основное приложение на Qt, а функции доступа к БД изолировать в Java.
Как думаешь, получится?
Записан
ingwarsmith
Новичок
Offline
Сообщений: 10
Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM
«
Ответ #4 :
Июль 15, 2016, 18:37 »
Цитировать
как я понимаю, через JNI реально использовать нативные функции Android
- это в принципе возможно, только надо знать "в лицо" конкретные либы от linux-ядра андроида и конкретные функции, которые необходимо вызывать; к тому же, необходимо будет скомпилировать (кросскомпилятивно под железо андроид) либу или либы, которые будут оберткой конкретных функций в JNI-интерфейсы - а) эти либы-обертки можно грузить через статический явовский метод System.loadLibrary(...), б) нужно объявить все необходимые "оберточные" методы статическими в Java-классе, из которого они будут вызываться. Кроме того, есть заморочки с составлением имён "оберточных" методов, хотя их можно и обойти. Тут можно посоветовать почитать книгу Сильвена Ретабоуила про Android NDK.
Цитировать
я бы хотел писать основное приложение на Qt, а функции доступа к БД изолировать в Java
- повторюсь, что функции доступа работают через механизм JNI и вызываются из кода Java, как интерфейсы, привязанные к реальным функциям C/C++-либ. Поэтому у меня, если я правильно понял вопрос, сделано как раз наоборот: на Qt написана "оберточная часть", а в Java - GUI андроид приложения. Получится ли у вас задуманное - не знаю, скорее, сомневаюсь.
Записан
titan83
Гость
Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM
«
Ответ #5 :
Июль 15, 2016, 19:23 »
Спасибо за ответ. Видимо, я неверно понял концепцию JNI, буду еще читать на досуге.
Если не секрет - зачем вообще Qt, тем более Qt4, если гуи все равно на яве?
Записан
titan83
Гость
Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM
«
Ответ #6 :
Июль 15, 2016, 19:29 »
Хм, читаю
http://doc.qt.io/qt-5/qandroidjniobject.html#details
и сразу вижу, что Provides APIs to call Java code from C++.
Т.е. как раз то, что мне и нужно - вызывать java-функции из c++.
Ладно, не буду вас грузить - задача не срочная, поразбираюсь на досуге.
Вам еще раз спасибо, что оживили мой интерес к этому вопросу.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...