在 Qt 中使用 aar 库

Using aar Library with Qt

是否可以在 Qt 应用程序中使用 Android Studio 库(aar 文件)?

问题是,我想用 Qt 实现一个移动应用程序,但是 Android Studio 只有一个库。是否可以将库包含在 Qt 项目中,或者让我为它编写一个包装器 class?

如果我必须实现一个包装器,我是否必须使用 JNI?是否有将它与 C++ 和 Java 库一起使用的示例?

我找到了对我有用的答案。

首先你必须解压aar文件,这样你就可以得到你的jar库文件。 然后您可以按照 link 中的说明将库包含到您的 apk 中: http://doc.qt.io/qt-5/android3rdpartylibs.html

完成此操作后,您必须实现自己的 Java 包装器 class 才能与库交互。因此,您必须使用 Qt 中的 QAndroidJniObject class。这里有更多关于它的信息。 http://doc.qt.io/qt-5/qandroidjniobject.html

您还可以查看此示例,他们在其中使用了自己的 java class。 http://doc.qt.io/qt-5/qtandroidextras-notification-example.html

您可以将 .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'))

好的,以防其他人遇到这个问题,我想通了。

如果您还没有 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-Android/android-build/build.gradle 获取 build.gradle 文件并将其复制到 project/android-sources/ 如果它还不存在。

将此插入 build.gradle 文件中 dependencies { }

api project(':LibraryFolder')

将此插入您的 settings.gradle 文件底部

include ':LibraryFolder'

在 LibraryFolder 中创建 build.gradle 文件并插入:

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

最后,如果您要添加的库有其他第 3 方依赖项,您必须将它们添加到 project/android-sources/build.gradle

例如,我正在添加 ImagePicker 并且必须在 dependencies { } 中插入以下行,但在 api 项目之上( ':LibraryFolder')

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

来自 the library's source