Использование библиотеки aar с Qt

Можно ли использовать библиотеку Android Studio (файл aar) в приложении Qt?

Проблема в том, что я хочу реализовать мобильное приложение с Qt, но есть только библиотека для Android Studio. Можно ли включить библиотеку в проект Qt или мне нужно написать для нее класс-оболочку?

Если мне нужно реализовать оболочку, нужно ли мне использовать JNI и есть ли примеры ее использования с C++ и библиотекой Java?


person C.Fabi    schedule 15.10.2015    source источник


Ответы (3)


Я нашел ответ, который сработал для меня.

Сначала вам нужно разархивировать файл aar, чтобы вы могли получить файл библиотеки jar. Затем вы можете следовать инструкциям по этой ссылке, чтобы включить библиотеку в свой apk: http://doc.qt.io/qt-5/android3rdpartylibs.html

Когда вы закончите это, вам нужно реализовать свой собственный класс-оболочку Java для взаимодействия с библиотекой. Поэтому вам нужно использовать класс QAndroidJniObject из Qt. Вот дополнительная информация об этом. http://doc.qt.io/qt-5/qandroidjniobject.html

Вы также можете взглянуть на этот пример, где они используют свой собственный класс Java. http://doc.qt.io/qt-5/qtandroidextras-notification-example.html

person C.Fabi    schedule 19.10.2015
comment
После того, как я разархивировал файл aar, я получил class.jar и другие папки и файлы. Должен ли я включать только файл class.jar в мой проект Qt? - person Heidi; 09.06.2017

Вы можете добавлять файлы .aar прямо в свой проект.

В файле gradle добавьте папку .aar в зависимости

compile project(':myAarFolder1.1')

и включите его в gradle.settings

include ':myAarFolder1.1'

расположение файла aar в моем проекте выглядит так

android/myAarFolder1.1/.aar
android/myAarFolder1.1/build.gradle

Содержимое файла android/myAarFolder1.1/build.gradle

configurations.maybeCreate("default")
artifacts.add("default", file('myAarFolder1.1.aar'))
person mohammad alabid    schedule 20.07.2017

Хорошо, если кто-то еще столкнется с этим, я понял это.

Если у вас еще нет исходной папки Android, добавьте ее, вставив ее в свой файл .pro.

android {
   ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-sources
}

Вот пример структуры файла:

project/android-sources
project/android-sources/settings.gradle
project/android-sources/build.gradle
project/android-sources/LibraryFolder
project/android-sources/LibraryFolder/Library.aar
project/android-sources/LibraryFolder/build.gradle

Возможно, вам придется получить файл build.gradle из ../build-Android/android-build/build.gradle и скопировать его в project/android-sources/, если его еще не существует.

Вставьте это в свой файл build.gradle в dependencies { }

api project(':LibraryFolder')

Вставьте это в файл settings.gradle внизу.

include ':LibraryFolder'

Создайте файл build.gradle внутри LibraryFolder и вставьте:

configurations.maybeCreate("default")
artifacts.add("default", file('Library.aar'))

и, наконец, если библиотека, которую вы добавляете, имеет другие сторонние зависимости, вам придется добавить их в project/android-sources/build.gradle.

Например, я добавлял ImagePicker и должен был вставить следующие строки внутри зависимостей { }, но выше api project(':LibraryFolder')

implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'com.github.bumptech.glide:glide:4.9.0'

из источника библиотеки

person Scott    schedule 17.01.2020