在 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 设备上运行该应用程序时,它会抱怨无法访问 dlopen
the .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 中的主要内容,如果未能解决你的问题,请参考以下文章