![](https://img-blog.csdnimg.cn/direct/a3c37664cc1240d3b3a612148ede647a.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Qt 项目 Android 移植
Qt Android移植的技巧和遇到的问题解决方案
ALONE_WORK
这个作者很懒,什么都没留下…
展开
-
一个 .cpp 引发的编译错误惨案
正在我一筹莫展的时候,领导发现了问题所在,原来 IMachine 这个类作为一个接口类,居然有一个 IMahine.cpp 文件,而该文件中只存在一个析构函数的实现,再无其他内容。正在一切就绪的时候发现好多的错误,刚开始以为是没有引用头文件目录找不到,然而在看到 pro 中对引用后就知道不是这个问题。奇怪的是在 Windows 下编译运行也是正常的,按照这种逻辑想下去完全没有头绪。原创 2024-04-23 09:02:01 · 319 阅读 · 0 评论 -
Qt 运行 Android 程序时找不到 Toou2D 库闪退
将编译生成的 Toou2D 文件夹拷贝至 D:\software\Qt\5.15.2\android\qml 目录下。程序闪退,错误信息如下,找不到库。原创 2024-04-23 09:00:00 · 252 阅读 · 2 评论 -
Qt Android 动态加载动态库失败
经过了七七四十九个劫难后程序终于稳定运行起来了,正当我以为完美时,问题又找上门了,QML 里面的二维码图片加载不起来了,这个图片还不是本地图片,是实时生成的。开始的时候并没有下面日志输出,我以为是 dynamic_static 转转失败了,让我一顿疯狂的找错误,当我加上加载错误时输出错误日志才恍然大悟,是缺少了库。在 UPCNC3.pro 中添加 websockets 模块。原创 2024-04-23 08:59:01 · 275 阅读 · 0 评论 -
Qt Android 申请写文件到内部存储
在项目中我们有一个软件配置文件,在软件更新一些配置后需要将配置信息保存到配置文件中,Windows 下是将配置文件保存到软件当前目录下,但是 Android 环境下无法保存到程序当前目录,最终只能将配置文件保存到内部存储中(平板的存储器)。Android 写文件是需要申请权限的。原创 2024-04-22 11:27:09 · 628 阅读 · 2 评论 -
Qt Android 无法加载 assets 目录下 lua 校准脚本
项目的校准脚本在打包的时候都放在 assets 资源目录下,但是 assets 是压缩包,Android 下虚拟目录,所以 Qt 可以加载 assets 目录下文件,但是 C 语言的 fropen 函数却无法打开。为了实现这个目的,需要修改原有的逻辑,程序在运行时将判断该存储器中是否存在校准脚本,如果不存在则从 assets 资源目录下复制过来。为此只能将所有的脚本文件移动到内部存储器中保存,然后从内存存储器中加载校准脚本可以使用。C 语言使用 fopen 无法打开 assets 目录下的文件。原创 2024-04-22 11:25:59 · 634 阅读 · 1 评论 -
QML 中引用 js 文件闪退问题
在移植 Android 中遇到这样一个引用兼容性问题,起因是这样的,Windows 版本的采用了 QML 分离的方式加载,而 Android 版本又采用了 qrc 的方式。而 Qt 中的机制是采用 QML 分离方式时则使用相对路径的方式引用 js 文件,而采用 qrc 的方式则需要使用 qrc 的方式引用 js 文件。且两种方式不能同时使用。在项目开发时使用了 Windows 下 QML 分离的方式加载,在 qml 文件中使用相对路径的方式引用了 js 文件,在 Android 环境下编译运行时程序闪退。原创 2024-04-19 15:21:20 · 532 阅读 · 1 评论 -
程序闪退,找不到 Toou2D 模块
本来该目录存在 Toou2D 模块,但是由于修改过,导致我一直以为没有问题,后来将原来的删除掉,再将重新编译后的目录复制进去就可以了。Qt 安装目录下的 D:/software/Qt/5.15.2/android/qml 下更新 Toou2D 模块。原创 2024-04-19 15:19:35 · 271 阅读 · 0 评论 -
dynamic_cast 跨模块使用失败
模块中进行转换时会失败,在本模块中没有问题。转换失败,最终确认是因为跨模块的原因。由类内部提供接口转换后返回。原创 2024-04-19 15:18:39 · 332 阅读 · 0 评论 -
无法接受消息中心消息问题
通过日志可以看到很多消息中心的消息都没有接收到,再一次是因为 `dynamic_cast` 转换失败的原因。原创 2024-04-18 13:14:01 · 156 阅读 · 0 评论 -
无法正确显示语言和语言切换
项目中使用 ts 语言文件,语言文件是放在 assets 资源目录下的。通过跟踪发现是设置进去的路径错误的,由于 `Android` 下设置的是 `assets` 相对路径,所以通过 `QUrl` 无法转换成绝对路径。原创 2024-04-18 13:12:22 · 176 阅读 · 0 评论 -
Qt Creator 调试控制台无法查看 log4z 的日志
重定向日志到 log4z 后无法查看打印的日志信息。原创 2024-04-17 09:37:53 · 288 阅读 · 0 评论 -
导致程序崩溃删除的地方
环境下直接不重定向日志,经过后期调试应该是 dynamic_static 转换失败导致。由于 Android 下没有创建文件和写文件的权限,所以导致程序崩溃。直接判断 Android 环境下返回 0。原创 2024-04-17 09:36:00 · 811 阅读 · 0 评论 -
Toou2D 的 TIconButton 不显示
我将 Toou2D 示例代码中 TIconButton 的例子拿过来是可以显示出来的,但是和项目中代码有较大的区别,只能一点点测试是什么原因导致。windows 下已基本完成了 UPCNC3 的功能开发,显示部分已经完成,但是移植的时候发现 TIconButton 根本显示不出来。在 svg.cso 文件中开头增加精度语句。原创 2024-04-16 09:09:20 · 491 阅读 · 0 评论 -
通过新建方式移植 CNC3 项目
尝试过很多种方式,Android 下都会闪退,没有办法的情况下只能以归零的心态取搞,直接新建一个项目,项目结构除了 UI 部分的放在 UPCNC 子项目下,其他不变。这样就可以慢慢的从头开始调试,经过半天的折腾,项目框架搭建完毕,并将原来的 QML 界面相关资源加载到新项目中并顺利的让程序运行起来,这样第一步就基本完成。将 QML 部分代码移植过来之后会发现界面中无法加载的图片资源,其原因是 Android 下查找资源的方式不一样。设置完下面的内容之后需要重新构建,直接运行可能无法将资源拷贝进去。原创 2024-04-16 09:07:43 · 225 阅读 · 0 评论 -
Qt for Android 配置 gradle
配置 gradle 版本在 Qt Android 编译时需要配置对应的 gradle 版本才能正确编译。原创 2024-04-15 11:20:08 · 825 阅读 · 0 评论 -
Qt for Android 开发环境
在搭建环境时开始感觉还挺顺利的,从 Qt 配置的环境里面看并没有什么问题,可真正编译程序的时候发现全是错误。最开始的时候安装了 JDK21 最新版本,然后根据 JDK21 安装 ndk, build-tools, Platform-Tools 和 Gradle,但是不管这么搞都会有编译错误。然后在换成 JDK20,依然不行,最后换到 JDK18 的时候终于可以了。需要注意的是还需要搭配正确的 gradle 版本和 gradle 插件版本。原创 2024-04-15 11:15:10 · 752 阅读 · 0 评论 -
项目移植介绍
Windows 版本开发基本完成后考虑在安卓平板上运行,所以首先使用 Qt Creator 对项目进行适配,然后再对移植到平板上运行。公司做了一下项目,我们平时就叫 CNC3,用于控制单个或多个加工机,而我们的加工机则是用来切削各种牙齿的。原创 2024-04-15 10:21:01 · 202 阅读 · 0 评论