在 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'
是否可以在 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'