【问题标题】:Adding external library into Qt-Android project将外部库添加到 Qt-Android 项目中
【发布时间】:2015-08-14 20:38:35
【问题描述】:

我使用 ma​​pbox-gl (https://github.com/mapbox/mapbox-gl-native)。

我使用 ma​​ke-android 构建了 libmapbox-gl.so (arch armeabi-v7a)

Android Studio 中的测试应用正常运行。

然后在Qt项目中尝试在myproject.pro文件中链接这个库:

contains(ANDROID_TARGET_ARCH,armeabi-v7a)
 { 
   ANDROID_EXTRA_LIBS = \
   $$PWD/../Desktop/mapbox-gl-native/build/android-arm-v7/Release/lib.target/libmapbox-gl.so
 }

项目正确构建。但是当我尝试在设备上运行应用程序时,应用程序崩溃了。 我想,应用找不到这个库。

如何正确连接库,可能出现什么问题?

【问题讨论】:

  • 您使用的是 Gradle 还是 Ant?在我构建了 Android 工作室并找到了我在 Gradle 中使用的库之后,最后一点还不错。我会仔细检查我添加它的位置并发布说明。

标签: android qt shared-libraries mapbox-gl


【解决方案1】:

以下是让它在 Gradle 活动的上下文中工作的关键部分。

myproject.pro

# ...

android {
    QT += androidextras

    # Default rules for deployment.
    include(deployment.pri)

    DISTFILES += \
        android/gradle/wrapper/gradle-wrapper.jar \
        android/AndroidManifest.xml \
        android/res/values/libs.xml \
        android/build.gradle \
        android/gradle/wrapper/gradle-wrapper.properties \
        android/gradlew \
        android/gradlew.bat \
        android/src/com/example/myproject/MySubclassOfQtActivity.java

    ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
}

# ...

部署.pri

android-no-sdk {
    target.path = /data/user/qt
    export(target.path)
    INSTALLS += target
} else:android {
    x86 {
        target.path = /libs/x86
    } else: armeabi-v7a {
        target.path = /libs/armeabi-v7a
    } else {
        target.path = /libs/armeabi
    }
    export(target.path)
    INSTALLS += target
} else:unix {
    isEmpty(target.path) {
        qnx {
            target.path = /tmp/$${TARGET}/bin
        } else {
            target.path = /opt/$${TARGET}/bin
        }
        export(target.path)
    }
    INSTALLS += target
}

export(INSTALLS)

Gradle 在 libs 目录中正确搜索并找到库,并在部署期间由 Qt 创建者正确捆绑。

检查build.gradle 它有:android > sourcesets > main > jniLibs.srcDirs = ['libs']

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2023-01-20
    相关资源
    最近更新 更多