要做 Linux 桌面开发了,需要点什么准备知识?

237 天前
 WangLiCha

公司新业务需求需要做一点国产化开发,所以需要开发一点 Linux 桌面程序,因为可能涉及到一些系统 API 的交互运用,所以技术栈初步选定了 Qt 。

之前的 Linux 的了解仅限于为了搭服务器学过一点基础的 shell 命令,涉及的桌面的完全不熟悉,应该看点哪方面的资料比较合适?

顺带问一下,因为之前是 Windows 开发所以基本习惯在 Windows 下用 Visual Studio ,但是现在要转向做 Linux 桌面程序的话是不是最好还是需要一个真实的 Linux 环境然后在上面做开发工作? Linux 上不同的桌面环境(据我所知有什么 KDE ,GNOME 之类的)上开发软件有区别吗?

3731 次点击
所在节点    程序员
28 条回复
jstony
237 天前
没事,你可以考虑继续用 windows 下的 visual studio code ,支持 remote ssh dev 。
debuggerx
237 天前
开发桌面应用那肯定是用真实桌面环境开发最方便了,qt 有 qtcreator ,不过我觉得不好用,还是一步到位直接 CLion 。资料的话就是 qt 相关,然后如果涉及比如托盘、窗口特效,那确实可能需要在不同 DE 下测试,一般的应用界面开发 QT 基本都会做好兼容的(不过要注意输入法插件的问题)。别家系统不知道,deepin 有些开发资料还是不错的,可以找找看参考参考。
GeruzoniAnsasu
236 天前
区别很大,但又没啥区别。记住别折腾,ubuntu + qtcreator + vscode 默秒全
lujiaxing
236 天前
其实不需要了解什么。保证能在各端都显示这种基本问题 QT 已经给你解决了。但你需要知道的是 KDE GNOME XFCE 虽然都能显示,但是不同设备,不同分辨率,不同 DPI 下呈现的效果可能是截然不同的。不同输入法的适配也会是个难题。这些需要在各种环境下反复的测试。的可能不是多高的技术水平,但很考验耐心。
stevobm
236 天前
QT 的协议有一定法律风险,指不定某天会收到律师函,然后狠狠宰一笔,这种事情已经不少了。做开源软件无所谓,但是商业软件须留个心眼。好心提醒。
yyzh
236 天前
你是针对统信还是麒麟?
marcushbs
236 天前
系统 API 不是特别复杂的话还是 Electron/Tauri 比较经济实惠
fox0001
236 天前
可以考虑利用现有的技能去开发。现在桌面 app,可以用 web 那套去实现,或者可以考虑 Flutter 那套几乎全平台的解决方案。

当然,学习一下 QT 也是好的,但我记得 QT 是要 C++开发。
chengxiao
236 天前
用 QT 应该大部分问题 QT 都解决了,他解决不了的,应该都是巨坑,比如之前缩放比例不为整数,渲染偶尔会出现横线,这坑在 kde 里留了几年,因为 qt 没解决,所以 kde 也没办法
wolfan
236 天前
技术方面大体上都是差不多的。
但是最好让老板买台国产芯的电脑来跑测试,最好是买配置平庸的,跑的时候记得多开些业务。
nagisaushio
236 天前
作为用户我不喜欢 electron ,作为开发者我直接 electron 启动
zeromake
236 天前
qt 的授权记得买,不买打算要搞 lgpl 来免费使用的话,要记得准备好材料,别等到 qt 国内代理卡时间点来就麻烦了( qt 国内代理不会管你符不符合 lgpl ,而是看到你有用就来了,用卡时间,之类的外盘方式强逼买授权)
bsidb
236 天前
麒麟与统信的软件包版本估计还不太一样,有些会比较偏老。你在 Ubuntu 或 Debian 上开发的程序拿过去,大概率还要自己再解决依赖问题。建议一步到位,直接在目标操作系统上开发与测试。
lsk569937453
236 天前
直接 window 开发,然后部署到 linux 上就可以了。
WangLiCha
236 天前
@zeromake 要准备点什么材料?我们之前调研的结论是 Qt 发律师函不会考虑你是不是真的违规使用,但是只要库是动态链接的就不用担心他的律师函
WangLiCha
236 天前
@wolfan 自己开发的话用虚拟机靠谱吗
WangLiCha
236 天前
@yyzh 到时候不排除这两种都得支持。他们有什么要关注的差异吗?
vivisidea
236 天前
不考虑考虑 Swing 么 /狗头保命

最近给我们公司运营开发了个 Swing GUI 小工具,用 jpackage 打成 exe /deb /dmg 安装包,安装的时候会把 jre runtime 也自动带上,装好之后就跟普通的程序没啥差别,也一样在应用中心卸载(当然慢是肯定慢的)

https://docs.oracle.com/en/java/javase/17/docs/specs/man/jpackage.html

我觉得有点意外,还挺方便
tanranran
236 天前
@vivisidea Swing 生态太差了
sbldehanhan
236 天前
既然是用 Qt 的话,那你还管 win 和 Linux 干嘛?上层 API 不都一样?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1036833

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX