Название: О кросскомпиляции библиотеки Qt 4.8.6 для ARM Отправлено: ingwarsmith от Июнь 14, 2016, 04:42 В прилагаемом PDF-файле описаны действия, произведенные над некоторыми файлами исходников Qt 4.8.6 с целью успешной кросскомпилятивной сборки некоторых библиотек фреймворка (модули Core, Network, Sql) для архитектуры ARMv7-a.
Выбор отдельных модулей из фреймворка Qt4 обусловлен необходимостью решения конкретной задачи: создание приложения Android/ARM для работы с удаленной БД под управлением MySQL через протокол интернета. Надеюсь, кому-то будет полезно. Название: Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM Отправлено: lit-uriy от Июнь 14, 2016, 14:53 А чё всякие там Нецеситас (или как его там нынче) не рулят?
Название: Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM Отправлено: ingwarsmith от Июнь 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 Название: Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM Отправлено: titan83 от Июль 15, 2016, 18:03 Друг, подскажи, пожалуйста, такой вопрос: как я понимаю, через JNI реально использовать нативные функции Android? У меня просто давняя задачка была на андроиде поработать с MSSQL, а мой любимый Qt5 из доступных драйверов БД под андроидом предлагает только sqlite.
Я нативно, под джайвой, подключался к серверу MSSQL. Т.е. я бы хотел писать основное приложение на Qt, а функции доступа к БД изолировать в Java. Как думаешь, получится? Название: Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM Отправлено: ingwarsmith от Июль 15, 2016, 18:37 Цитировать как я понимаю, через JNI реально использовать нативные функции Android - это в принципе возможно, только надо знать "в лицо" конкретные либы от linux-ядра андроида и конкретные функции, которые необходимо вызывать; к тому же, необходимо будет скомпилировать (кросскомпилятивно под железо андроид) либу или либы, которые будут оберткой конкретных функций в JNI-интерфейсы - а) эти либы-обертки можно грузить через статический явовский метод System.loadLibrary(...), б) нужно объявить все необходимые "оберточные" методы статическими в Java-классе, из которого они будут вызываться. Кроме того, есть заморочки с составлением имён "оберточных" методов, хотя их можно и обойти. Тут можно посоветовать почитать книгу Сильвена Ретабоуила про Android NDK.Цитировать я бы хотел писать основное приложение на Qt, а функции доступа к БД изолировать в Java - повторюсь, что функции доступа работают через механизм JNI и вызываются из кода Java, как интерфейсы, привязанные к реальным функциям C/C++-либ. Поэтому у меня, если я правильно понял вопрос, сделано как раз наоборот: на Qt написана "оберточная часть", а в Java - GUI андроид приложения. Получится ли у вас задуманное - не знаю, скорее, сомневаюсь. Название: Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM Отправлено: titan83 от Июль 15, 2016, 19:23 Спасибо за ответ. Видимо, я неверно понял концепцию JNI, буду еще читать на досуге.
Если не секрет - зачем вообще Qt, тем более Qt4, если гуи все равно на яве? Название: Re: О кросскомпиляции библиотеки Qt 4.8.6 для ARM Отправлено: titan83 от Июль 15, 2016, 19:29 Хм, читаю http://doc.qt.io/qt-5/qandroidjniobject.html#details
и сразу вижу, что Provides APIs to call Java code from C++. Т.е. как раз то, что мне и нужно - вызывать java-функции из c++. Ладно, не буду вас грузить - задача не срочная, поразбираюсь на досуге. Вам еще раз спасибо, что оживили мой интерес к этому вопросу. |