android qt и java
От: Nevidim  
Дата: 01.08.19 09:49
Оценка:
Приветствую!
Есть написанная библиотека (so) на QT под Андроид. Хочется, чтобы разработчик, использующий Android Studio и соответственно Java мог с ней работать. Библиотека своя, так что можно с ней делать, что угодно.
В принципе, код в библиотеке планируется запускать как сервис (служба)
Как наиболее просто осуществить это взаимодействие?
Как собрать это в Android Studio вместе в один пакет?
Re: android qt и java
От: Zhendos  
Дата: 01.08.19 10:40
Оценка:
Здравствуйте, Nevidim, Вы писали:

N>Есть написанная библиотека (so) на QT под Андроид. Хочется, чтобы разработчик, использующий Android Studio и соответственно Java мог с ней работать.


Что подразумевается под "работать"? Он будет править C++/QML или просто использовать готовую ".so"
в бинарном виде?
Re[2]: android qt и java
От: Nevidim  
Дата: 01.08.19 12:22
Оценка:
Здравствуйте, Zhendos, Вы писали:

Z>Здравствуйте, Nevidim, Вы писали:


N>>Есть написанная библиотека (so) на QT под Андроид. Хочется, чтобы разработчик, использующий Android Studio и соответственно Java мог с ней работать.


Z>Что подразумевается под "работать"? Он будет править C++/QML или просто использовать готовую ".so"

Z>в бинарном виде?


Нет конечно, не править. Использовать в бинарном виде.
Re[3]: android qt и java
От: Zhendos  
Дата: 01.08.19 13:08
Оценка:
Здравствуйте, Nevidim, Вы писали:

N>Здравствуйте, Zhendos, Вы писали:


Z>>Здравствуйте, Nevidim, Вы писали:


N>>>Есть написанная библиотека (so) на QT под Андроид. Хочется, чтобы разработчик, использующий Android Studio и соответственно Java мог с ней работать.


Z>>Что подразумевается под "работать"? Он будет править C++/QML или просто использовать готовую ".so"

Z>>в бинарном виде?


N>Нет конечно, не править. Использовать в бинарном виде.


Не очень понятно как он сможет это сделать без Java/JNI обертки,
но не важно, вообще добавить ".so" в apk очень просто, положите его
сборки под разные архитектуры в
app/src/main/libs/armeabi
и
app/src/main/libs/arm64
и все:

Вот пример более сложного правила gradle
где библиотека на языке Rust сначала собирается,
а потом уже в нужную директорию копируется:

https://github.com/Dushistov/rust_swig/blob/15ab3bd3b88ef17c450ac3acc9a8ca482d4df534/android-example/app/build.gradle#L73

вызов cargo для сборки Rust можно заменить на qmake/make с правильными
аргументами и все будет работать прямо по нажатию Run/Build в Android Studio.

Другой вопрос что этого нифига не хватит, кроме вашей библиотеки ведь нужно еще всякие libQtCore/QtGui и т.д.

Самый простой путь, раз у вас есть готовое приложение на Qt для Android,
это открыть его apk (это ведь всего лишь zip файл) и скопировать из его папки lib все что нужно
и положить в app/src/main/libs/
Re[4]: android qt и java
От: Nevidim  
Дата: 02.08.19 08:37
Оценка:
Здравствуйте, Zhendos, Вы писали:

Z>Здравствуйте, Nevidim, Вы писали:


N>>Здравствуйте, Zhendos, Вы писали:


Z>>>Здравствуйте, Nevidim, Вы писали:


N>>>>Есть написанная библиотека (so) на QT под Андроид. Хочется, чтобы разработчик, использующий Android Studio и соответственно Java мог с ней работать.


Z>>>Что подразумевается под "работать"? Он будет править C++/QML или просто использовать готовую ".so"

Z>>>в бинарном виде?


N>>Нет конечно, не править. Использовать в бинарном виде.


Z>Не очень понятно как он сможет это сделать без Java/JNI обертки,

Z>но не важно, вообще добавить ".so" в apk очень просто, положите его
Z>сборки под разные архитектуры в
Z>app/src/main/libs/armeabi
Z>и
Z>app/src/main/libs/arm64
Z>и все:

Z>Вот пример более сложного правила gradle

Z>где библиотека на языке Rust сначала собирается,
Z>а потом уже в нужную директорию копируется:

Z>https://github.com/Dushistov/rust_swig/blob/15ab3bd3b88ef17c450ac3acc9a8ca482d4df534/android-example/app/build.gradle#L73


Z>вызов cargo для сборки Rust можно заменить на qmake/make с правильными

Z>аргументами и все будет работать прямо по нажатию Run/Build в Android Studio.

Z>Другой вопрос что этого нифига не хватит, кроме вашей библиотеки ведь нужно еще всякие libQtCore/QtGui и т.д.


Z>Самый простой путь, раз у вас есть готовое приложение на Qt для Android,

Z>это открыть его apk (это ведь всего лишь zip файл) и скопировать из его папки lib все что нужно
Z>и положить в app/src/main/libs/



Благодарю!
А эти вот дополнительные библиотеки, их надо обязательно подгружать в Java через LoadLibrary или они каким то образом могут подгружаться автоматически?
Re[5]: android qt и java
От: Zhendos  
Дата: 02.08.19 10:54
Оценка:
Здравствуйте, Nevidim, Вы писали:

N>А эти вот дополнительные библиотеки, их надо обязательно подгружать в Java через LoadLibrary или они каким то образом могут подгружаться автоматически?



Обычно хватает "главную" библиотеку подгрузить, то есть вашу библиотеку,
а там уже динамический линковщик, пройдется по ее заголовку и подгрузит зависимости,
типа libQtCore и т.п.,

но в Qt могут быть разные хитрости, например может быть какой-то плагин
для работы с Android нужно раньше всех загрузить,
но у вас же есть готовый рабочий пример, ваш проект Qtшный проект,
где-то там в его недрах есть java файлы, в которых написано как правильно вызывать System.loadLibary
для вашей ".so", ну или в исходниках Qt можно подсмотреть.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.