您好,我正在尝试将 OpenGL 桌面应用程序移植到 Android。我对 Android 开发一无所知,所以我依靠 Qt Creator 来打包应用程序。作为设置的一部分,我使用以下设置在 android ndk 中调用了“make-standalone-toolchain”脚本
--platform=android-21
--toolchain=arm-linux-androideabi-4.9
--system=linux-x86_64
然后我使用 android-cmake 并将其传递给我新创建的独立工具链的路径,该工具链在我的 assimp 目录树中创建了 libassimp.so、libassimp.so.3 和 libassimp.so.3.1.1(ln) 。
我将 libassimp.so 路径传递到“附加库”下的 Qt 创建者项目构建菜单。然而,在 Android 上部署该应用程序时,它会崩溃并出现错误:
dlopen("/data/app/org.qtproject.example.a3dqtquick-2/lib/arm/lib3dqtquick.so", RTLD_LAZY) failed: dlopen failed: could not load library "libassimp.so.3" needed by "lib3dqtquick.so"; caused by library "libassimp.so.3" not found
我什至可以在项目构建目录中看到 libassimp.so (不是 libassimp.so.3)文件
../android-build/libs/armeabi-v7a。
不知道从这里去哪里,手动将 libassimp.so.3 放在这个位置并不能解决问题。谢谢阅读。我将根据您的反馈添加更多信息。请原谅任何信息缺陷,因为这是我第一次尝试 Android。
以下是deployment-settings.json文件
"description": "This file is generated by qmake to be read by androiddeployqt and should not be modified by hand.",
"qt": "/home/ubashir/programs/Qt/5.4/android_armv7",
"sdk": "/home/ubashir/programs/android-sdk-linux",
"sdkBuildToolsRevision": "21.1.2",
"ndk": "/home/ubashir/programs/android-ndk-r10d",
"toolchain-prefix": "arm-linux-androideabi",
"tool-prefix": "arm-linux-androideabi",
"toolchain-version": "4.9",
"ndk-host": "linux-x86_64",
"target-architecture": "armeabi-v7a",
"qml-root-path": "/home/ubashir/code/3dqtquick",
"application-binary": "/home/ubashir/code/3dqtquickAndroid/lib3dqtquick.so"
UPDATE:
我现在已经尝试过这个..将指向 assimp.so.3.1.1 的所有链接替换为后者的副本,因此现在我的库 libassimp.so.3 是一个文件,而不是指向 libassimp.so.3.1.1 的链接。我手动将 libassimp.so.3 添加到我的项目子文件夹 android/libs/aremabi-v71 --- 不好。我确认我的构建目录显示了我手动添加的所有 libassimp 文件,因此推测它们正在部署,但错误仍然存在:
failed: dlopen failed: could not load library "libassimp.so.3" needed by "lib3dqtquick.so".
如此处所述http://webmail.dev411.com/p/gg/android-ndk/1386vger6e/use-assimp-c-library-in-ndk-ld-error-obj-local-armeabi-v7a-libassimp-so-inknown-与 vuforia 一起使用的目标 http://webmail.dev411.com/p/gg/android-ndk/1386vger6e/use-assimp-c-library-in-ndk-ld-error-obj-local-armeabi-v7a-libassimp-so-incompatible-target-for-use-with-vuforia
我什至在 android 的 assimp 构建目录上运行 cmake 后编辑了 link.txt 文件,将条目 -soname,libassimp.so.3 更改为 -soname,libassimp.so 但它仍然创建 libassimp.so.3.1.1 及其两个链接,即 libassimp.so.3 和 libassimp.so。所以还是卡住了。。