Russian Qt Forum
Март 28, 2024, 12:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: О кросскомпиляции библиотеки Qt 4.8.6 для ARM  (Прочитано 9757 раз)
ingwarsmith
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« : Июнь 14, 2016, 04:42 »

В прилагаемом PDF-файле описаны действия, произведенные над некоторыми файлами исходников Qt 4.8.6 с целью успешной кросскомпилятивной сборки некоторых библиотек фреймворка (модули Core, Network, Sql) для архитектуры ARMv7-a.
Выбор отдельных модулей из фреймворка Qt4 обусловлен необходимостью решения конкретной задачи:
создание приложения Android/ARM для работы с удаленной БД под управлением MySQL через протокол интернета.
Надеюсь, кому-то будет полезно.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Июнь 14, 2016, 14:53 »

А чё всякие там Нецеситас (или как его там нынче) не рулят?
Записан

Юра.
ingwarsmith
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #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
Гость
« Ответ #3 : Июль 15, 2016, 18:03 »

Друг, подскажи, пожалуйста, такой вопрос: как я понимаю, через JNI реально использовать нативные функции Android? У меня просто давняя задачка была на андроиде поработать с MSSQL, а мой любимый Qt5 из доступных драйверов БД под андроидом предлагает только sqlite.
Я нативно, под джайвой, подключался к серверу MSSQL.
Т.е. я бы хотел писать основное приложение на Qt, а функции доступа к БД изолировать в Java.
Как думаешь, получится?
Записан
ingwarsmith
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #4 : Июль 15, 2016, 18:37 »

Цитировать
как я понимаю, через JNI реально использовать нативные функции Android
- это в принципе возможно, только надо знать "в лицо" конкретные либы от linux-ядра андроида и конкретные функции, которые необходимо вызывать; к тому же, необходимо будет скомпилировать (кросскомпилятивно под железо андроид) либу или либы, которые будут оберткой конкретных функций в JNI-интерфейсы - а) эти либы-обертки можно грузить через статический явовский метод System.loadLibrary(...), б) нужно объявить все необходимые "оберточные" методы статическими в Java-классе, из которого они будут вызываться. Кроме того, есть заморочки с составлением имён "оберточных" методов, хотя их можно и обойти. Тут можно посоветовать почитать книгу Сильвена Ретабоуила про Android NDK.
Цитировать
я бы хотел писать основное приложение на Qt, а функции доступа к БД изолировать в Java
- повторюсь, что функции доступа работают через механизм JNI и вызываются из кода Java, как интерфейсы, привязанные к реальным функциям C/C++-либ. Поэтому у меня, если я правильно понял вопрос, сделано как раз наоборот: на Qt написана "оберточная часть", а в Java - GUI андроид приложения. Получится ли у вас задуманное - не знаю, скорее, сомневаюсь.
Записан
titan83
Гость
« Ответ #5 : Июль 15, 2016, 19:23 »

Спасибо за ответ. Видимо, я неверно понял концепцию JNI, буду еще читать на досуге.
Если не секрет - зачем вообще Qt, тем более Qt4, если гуи все равно на яве?
Записан
titan83
Гость
« Ответ #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]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 22.