文章目录
1.安装DevEco
不要用最新版的DevEco,而是要用教程【基于DevEco的Qt工程配置】中提到的4.1.0.400版本。不然各种问题没法找答案
找了一下资料,官方(也可能是社区)人员已经做过了Qt的移植。
下载了【Qt For OpenHarmony Alpha v6版本】后,按照他们的操作手册【基于DevEco的Qt工程配置】来操作就可以了
2.注意事项
但是,可能会遇到一些问题。这里记录一下。
2.1.修改module.json5(超级重要)
将MyApplication/entry/src/main/module.json5
里面的srcEntry
由原来的EntryAbility.ts改成 EntryAbility.ets,不然启动的还是旧的入口,而不是咱们从qt拷贝过来的入口。
"srcEntry": "./ets/entryability/EntryAbility.ets",
2.2.adapter_ts(目前官方wiki中的例程已经没有用到这个模块了,可以不管这个了)
adapter_ts的下载信息在官方wiki的附录章节中:
假如按照文档中介绍的,导入adapter_ts模块后,会报这个错误:
Cannot find module 'adapter_ts' or its corresponding type declarations.
有人也遇到这个问题【基于DevEco的Qt工程编程提示Cannot find module ‘adapter_ts’ or its corresponding type declarations. 】。但是我按照官方的人的回复
开发者你好,可以参考wiki文档《测试工程使用说明》中的编辑配置章节设置Auto Dependencies
并不能解决这个问题。
最后我是参考这里【OpenHarmony—开发及引用动态共享包】,解决掉这个问题的。
在对adapter_ts模型进行引入、编译之后,会在其build目录下得到一个adapter_ts.har
,不用动他,留它在这里。
然后在主模块的oh-package.json5文件中的dependencies属性中,引入adapter_ts。
"dependencies": {
"libqtmodule.so": "file:./src/main/cpp/types/libqtmodule",
"adapter_ts": "file:../adapter_ts"
},
添加这句后,IDE会报一个错误,然后自动给出方案,说什么ohpm install之类的,点击应用即可。
2.3.无法使用opengl或者OpenGLFunctions_2_1
原因是此时HarmonyOS使用的是opengl es2及es3的接口【对Qt OpenGL的适配 】
而当定义了openglES2之后,下面这一句就会为fasle,从而屏蔽整个OpenGLFunctions_2_1类
#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
因此,以后统一用OpenGLFunctions就好了。因为OpenGLFunctions里面的函数是GLES2 + OpenGL1通用子集
// GLES2 + OpenGL1 common subset
2.4.手机插到电脑后,DevEco无法识别
我的手机是HarmonyOS 3.0的。插到电脑后,DevEco的Device列表中没有识别到我的手机。
哪怕按照这里的设置了也还是不行。【[经验分享] Deveco3.1连接华为Mate30Pro 5G显示No Device解决法】
暂时不知道怎么解决。
2.5.Qt读取rawfile路径下的文件
好的,OpenHarmony Qt也提供了QFile读rawfile文件的功能。比如QFile file(“rawfile:/xxx.txt”)
2.6. code:9568404 error: delivery sign profile failed
2.7.使用Qt3d时需要注意的事情
a.要加入Concurrent模块,否则会报错
b.要将plugins/renderers/libplugins_renderers_openglrenderer.so
拷贝到lib中,否则会报找不到opengl渲染插件
c.将rawfile下面的Qt文件夹拷贝一份到arm64-v8a处。因为
注意:因为openharmony系统路径访问权限问题,在新系统中对MQL插件加载路径进行了限制,因此需要将QML相关资源再次拷贝一份到\entry\libs\arm64-v8a目录下
资料来源【拷贝qml资源文件】
2.8.设置APP图标及名称
2.9. managed by isoftstone水印
不方便说太多,看图:
2.10. 使用qml
rawfile、arm64a-v8a这两个地方都要保证有这个Qt/qml的文件夹。
参考:
【Qt for OpenHarmony 开发环境搭建笔记】
【OpenHarmony—开发及引用动态共享包】
【基于DevEco的Qt工程配置】