近年来,信创产业发展迅猛,国产软硬件适配的需求日益增加,但国内CPU架构种类繁多,导致大量的适配投入。同时,由于底层代码质量不同、代码实现风格不统一等问题,造成自研操作系统的应用开发门槛高,应用生态严重缺失。

面对这种情况,统信软件专门推出一款帮助开发者快速实现跨平台跨架构的开发套件:DTK(Development ToolKit)。DTK是统信基于Qt开发的一整套简单且实用的通用开发框架,处于统信UOS系统中的核心位置,统信UOS浏览器、音乐、邮件等40余款原生应用全部使用DTK开发。DTK从开发者的角度出发,融合现代化的开发理念,提供丰富的开发接口与支持工具,满足日常图形应用、业务应用、系统定制应用的开发需求,提升开发效率,让开发者畅享跨平台、跨架构的开发体验。

统信软件同心生态联盟联合统信软件教育与考试中心将于2022年3月10日14:00-16:00,举办同心赋能·铸就未来第六期—统信DTK开发套件应用技术培训活动,采用线上腾讯会议(会议号:369-413-916)帮助更多的开发者从理论和实践的角度,了解“统信DTK开发套件应用技术”,解决开发者长久以来在自主软硬件平台开发的烦恼。

2019年伴随着deepin V20版本的开发,DTK也迎来了有史以来的最大改动,从此开始了DTK5.0时代。

DTK其实是多个项目的总称,它按功能角色划分了不同的模块,dtkcommon是所有模块的基础,它主要提供qmake相关的pri/prf文件,因为每个模块项目的目录结构都有许多共同点,比如都分了src、tools、tests这些子目录,并且都需求在编译期自动生成一些文件,还会定义一些文件的安装路径,为了方便统一的管理这些行为,遂将这些通用的与qmake构建相关的实现都放到了dtkcommon中实现,以便在其它模块编译时统一引用。

dtkcore包含了所有与图形不相关的实现,它的定位与Qt5的QtCore类似,提供了获取系统信息、监听文件系统、日志框架等功能。

dtkgui的定位是用来实现与图形相关且与具体的UI控件无关的基础功能,提供了如图形环境的主题读写功能,可以获取和设置鼠标光标的闪动速度、当前环境的文字大小等配置。

在这之外还封装了与窗口管理器交互的功能,比如获取窗口管理器的名称、为某个窗口设置开启背景模糊的功能,这些功能在DDE桌面环境中被大量使用。此外还提供一些与图形相关的工具类,此处不再详细展开。

dtkwidget建立在dtkgui之上,它主要包含两大部分内容,一是对Qt已有控件提供符合deepin设计的样式,在这个实现中,没有使用任何qss代码,而是对Qt更底层的部分进行覆盖,这样做的好处是:不影响使用DTK开发的程序使用qss来进行二次定义,对于一个开发库来说,这有非常大的意义。

另一方面,因为Qt已有的控件已经设计了很多年,对于现代化的应用程序来说,它缺少新鲜血液的注入,缺乏新控件,无法满足新型的现代化程序的开发,所以DTK还增加了一些新控件,比如“标签编辑框”、“窗口内部的消息通知”、“开关式切换按钮”等。此外对所有的控件(Qt中已有的和DTK中新增的),都统一了字体和颜色管理系统,使用dtkwidget开发的应用,都可以自动跟随图形环境的“亮色”和“暗色”主题设置,可以统一的响应系统字体大小改变,不用重启应用也可以实时看到效果。

qt5integration和qt5platform-plugins是为Qt编写的插件,为程序提供了对操作系统能力的封装,比如调用系统提供的文件选择对话框、为窗口自定义标题栏、设置窗口的圆角大小等功能。

这两个模块不会被应用程序直接使用,它们所提供的所有能力皆已经在dtkgui和dtkwidget中进行了封装,所以很好的屏蔽掉了程序对底层系统的强制依赖,使得DTK开发的程序可以轻松的迁移到其它平台。

DTK一键安装开发工具包
为了方便开发者开发 DTK 应用,我们已经将所有做 DTK 应用开发的软件包整合在了一个软件包里面,安装该包即可自动安装做 DTK 应用开发的环境,包括 libdtkwidget-dev, libdtkgui-dev, libdtkcore-dev,cmake,qtcreator,qtcreator-template-dtk,qt5-default,g++,git…等包。

安装开发环境
在目前的最新版 deepin 商店,已经上架了 DTK 开发工具包,在商店搜索 DTKIDE 即可看到

2022年3月10日14:00-16:00,将为您详细介绍DTK开发套件应用技术,采用线上腾讯会议(会议号:369-413-916)帮助更多的开发者从理论和实践的角度,了解“统信DTK开发套件应用技术”,解决开发者长久以来在自主软硬件平台开发的烦恼。
————————————————
版权声明:本文为CSDN博主「蔚颖willing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/willingpoint/article/details/123376406

统信DTK开发套件应用技术分享的更多相关文章

  1. 跨平台跨架构的统信DTK开发套件教程及常见问题

    DTK是统信基于Qt开发的一整套简单且实用的通用开发框架,处于统信UOS系统中的核心位置,统信UOS浏览器.音乐.邮件等40余款原生应用全部使用DTK开发.DTK从开发者的角度出发,融合现代化的开发理 ...

  2. fir.im Weekly - 新开发时代,需要什么样的技术分享

    "2016年,当我们迎来了如Xcode 8.Swift 3.SiriKit.Android N.Android Instant Apps.React Native等诸多移动开发技术.开发工具 ...

  3. iOS开发技术分享(1)— iOS本地数据存储

    iOS开发技术分享(1)— iOS本地数据存储 前言: 我本是一名asp.net程序员,后来加入了iOS游戏开发队伍,到现在也有一年多的时间了.这一年来,每天都干到2.3点钟才睡觉,不为别的,只为了学 ...

  4. AY的Dapper研究学习-继续深入-C#开发-aaronyang技术分享

    原文:AY的Dapper研究学习-继续深入-C#开发-aaronyang技术分享 ====================www.ayjs.net       杨洋    wpfui.com      ...

  5. AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享

    原文:AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享 ====================www.ayjs.net       杨洋    wpfui.com      ...

  6. C# 桌面软件开发-深入学习[2]- AY-C#人爱学不学-aaronyang技术分享

    原文:C# 桌面软件开发-深入学习[2]- AY-C#人爱学不学-aaronyang技术分享 1 : C# Assembly.GetEntryAssembly().GetName().Version. ...

  7. C# 桌面软件开发-深入学习 [1]- AY-C#人爱学不学-aaronyang技术分享

    原文:C# 桌面软件开发-深入学习 [1]- AY-C#人爱学不学-aaronyang技术分享 曾经我做office,不想依赖别人dll,就使用了 Type.GetTypeFromProgID 可以根 ...

  8. 开源物联网框架ServerSuperIO 3.0正式发布(C#),跨平台:Win&Win10 Iot&Ubuntu&Ubuntu Mate,一套设备驱动跨平台挂载,附:开发套件和教程。

    3.0版本主要更新内容: 1.增加跨平台能力:Win&Win10 Iot&Ubuntu&Ubuntu Mate 2.统一设备驱动接口:可以一套设备驱动,跨平台挂载运行,降低人力 ...

  9. 阿里技术分享:阿里自研金融级数据库OceanBase的艰辛成长之路

    本文原始内容由作者“阳振坤”整理发布于OceanBase技术公众号. 1.引言 OceanBase 是蚂蚁金服自研的分布式数据库,在其 9 年的发展历程里,从艰难上线到找不到业务场景濒临解散,最后在双 ...

随机推荐

  1. JVM内存模型(五)

    一.JVM内存模型 1.1.与运行时数据区     前面讲过了运行时数据区那接下来我们聊下内存模型,JVM的内存模型指的是方法区和堆:在很多情况下网上讲解会把内存模型和运行时数据区认为是一个东西,这是 ...

  2. CDNDrive 第一个版本发布 & 布客新知第二次备份完成

    CDNDrive 第一个版本发布,新适配五个图床 https://github.com/apachecn/CDNDrive 另外,布客新知第二次备份完成 TutorialsPoint:http://i ...

  3. egret p2物理引擎 遇到的坑(1)

    直接将pythsic包丢到libs目录下并且修改egretPropertis.json文件 TypeError [ERR_INVALID_ARG_TYPE]: The "to" a ...

  4. Git .gitignore 不起作用的解决办法

    解决方法的原理:.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的. 解决方案:git rm -r --cached . ...

  5. Linux shell脚本之 if条件判断 (转)

    IF条件判断 1.基本语法: if [ command ]; then 符合该条件执行的语句 fi 2.扩展语法: if [ command ];then 符合该条件执行的语句 elif [ comm ...

  6. NSMutableString练习

    从要求讲3个520it拼接在一起 会生成很多新的字符串 NSString *res = @""; NSString *subStr = @"520"; // 1 ...

  7. DNS域名解析之正向解析

    DNS域名解析之正向解析 1.DNS介绍 2.DNS正向解析实验 1.DNS定义:DNS是"域名系统"的英文缩写.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地 ...

  8. 稳住,传输层里的TCP与UDP协议

    传输层协议 1.TCP协议介绍及报文格式 2.TCP三次握手三次挥手 3.UDP协议介绍 1.传输层有两个协议:TCP(传输控制协议)  UDP(用户数据协议) . TCP是面向连接的,可靠的进程到进 ...

  9. python篇第6天【数据类型】

    Python有五个标准的数据类型: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) Python数字 数字数据类型用于存储数值. 他 ...

  10. postman中环境变量的设置方法、使用方法和实际中常见使用场景

    文中共介绍2种添加环境变量的方法.2种使用环境变量的方法,以及不同方法的适用范围. 文中给出了环境变量的两种常见使用场景:切换环境.动态参数关联(前一个请求的响应作为下一个请求的入参) 2种添加环境变 ...