在 Qt Creator 中启动应用程序之前,如何将我在 Qt for Android 中的 .so 文件复制到 android-build/libs/arm64-v8a 中

Posted

技术标签:

【中文标题】在 Qt Creator 中启动应用程序之前,如何将我在 Qt for Android 中的 .so 文件复制到 android-build/libs/arm64-v8a 中【英文标题】:How to copy my .so file in Qt for Android into android-build/libs/arm64-v8a before launching the app in Qt Creator 【发布时间】:2020-08-21 06:28:16 【问题描述】:

我已将自己的 .so 共享库文件添加到 Qt 项目中,它生成了以下内容:

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib-resources/release/ -lmysofile
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib-resources/debug/ -lmysofile
else:unix: LIBS += -L$$PWD/lib-resources/ -lmysofile

INCLUDEPATH += $$PWD/lib-resources
DEPENDPATH += $$PWD/lib-resources

但当我在 android 设备上运行该应用程序时,它会抱怨无法访问 dlopenthe .so 库。

当我导航到我的 [build-folder]/android-build/libs/armd64-v8a 文件夹时,我没有在其中看到“libmysofile.so”。

我尝试在我的 .pro 中使用以下内容来复制 .so 但这也不起作用,因为它需要在运行应用程序之前进行 make 安装,这在我的情况下被认为为时已晚,因为我正在使用运行功能在 Qt Creator 中。

copy_lib.files    = $$PWD/lib-resources/libmysofile.so
copy_lib.path     = $$[build-dir]/android-build/libs/arm64-v8a
INSTALLS                  += copy_lib

我错过了什么?谢谢

【问题讨论】:

【参考方案1】:

看来您确实只是缺少“make install”调用。由于您使用的是 QtCreator,因此您可以在构建/运行过程中添加“安装”参数。

在“项目”选项卡下,添加自定义流程“制作”步骤,在其中将“安装”指示为参数。如果您希望每次构建时都完成,请使用“构建”部分。如果您希望仅在部署时完成,请使用带有“部署步骤”的“运行”部分。请注意,当您使用 QtCreator 运行应用程序时,它基本上会开始构建,然后部署并最终真正运行应用程序。

【讨论】:

QMAKE_EXTRA_TARGETS += cp $$PWD/lib/mylib.so $$OUT_PWD/android-build/libs/arm64-v8a 是一个可行的选择吗? 添加了 make install 作为自定义部署步骤。它抱怨它是只读 mkdir:/libs/arm64-v8a/: Read-only file system make: *** [install_target] Error 1$$OUT_PWD 只读吗? QMAKE_EXTRA_TARGETS 是另一种方法,如果我没记错的话,您不需要使用 make 进行“安装”调用。但尽量选择“make install”,这是最标准的方式。我不认为它是只读的。您是否检查过您给定的路径是否正确?是否出于测试目的尝试过任何其他输出路径(例如 /tmp)?

以上是关于在 Qt Creator 中启动应用程序之前,如何将我在 Qt for Android 中的 .so 文件复制到 android-build/libs/arm64-v8a 中的主要内容,如果未能解决你的问题,请参考以下文章

如果开发时需要,如何在 qt-creator 中调整设计器空间的大小?

OpenGL 程序无法在 Qt Creator 中启动

无法在 Qt Creator 中启动 gdb.exe

Qt Creator 无法启动调试器

如何设置qt creator的快捷键

Qt Creator 卡在 Mac 操作系统上的“启动调试器”中