• 首页
  • Qt文档
  • DTK文档
  • 玲珑文档
  • 商店打包规范

    1. 应用标识(包名)


    应用标识/包名(appid)是应用的唯一标识,应用商店只接受使用倒置域名规则命名的应用,如:

    推荐使用你已经拥有的域名作为应用名称。如果使用未拥有的域名作为前缀,可能会引起该域名拥有者进行申诉,导致你的应用将会被删除。

    2. 应用安装


    2.1 安装路径

    应用的全部安装文件必须在如下目录:

    /opt/apps/${appid}/

    禁止使用deb的postinst等钩子对系统进行修改,包含这些脚本的软件包都无法上架

    3. 目录结构


    应用根目录下面有entries/files两个目录和一个info文件

    3.1 info文件

    info文件是应用的描述文件,使用json格式,info内容如下:

    info文件中各个字段的说明如下:

    appid:应用标识

    name:应用名称

    version:应用版本,格式为 {MAJOR}.{MINOR}.{PATCH}.{BUILD},所有版本号均为纯数字

    arch:应用支持架构,当前商店支持如下CPU架构

    amd64:x86架构CPU

    mips64el:龙芯系列CPU

    arm64:ARM64位CPU

    sw_64:申威CPU

    permissions:应用权限描述。

    autostart:是否允许自启动

    notification:是否允许使用通知

    trayicon:是否运行显示托盘图标

    clipboard:是否允许使用剪切板

    account:是否允许读取登录用户信息

    bluetooth:是否允许使用蓝牙设备

    camera:是否允许使用视频设备

    audio_record:是否允许进行录音

    installed_apps:是否允许读取安装软件列表

    开发者需要注意,应用只允许使用普通用户权限启动,禁止应用以任何形式获取root权限。

    support-plugins: 支持的插件类型

    plugins:实现的的插件类型,在对应的plugins目录下,按照实现的插件类型放置文件。

    在安装时,系统会将插件链接到对应的应用目录。

    注意事项:

    desktop/serverice请指向自己的应用目录的/opt/apps/com.deepin.demo/files目录下的文件。

    对于特殊的应用,有多个入口的desktop文件,表示功能不同的程序。对于这种需要有多个入口的程序,采用严格限制的白名单方式进行申请。一般应用程序不允许有多个入口的desktop文件。

    在plugins机制中,plugins的每一个子目录以及主程序目录均是无法相互访问的,在开发过程中请尤其注意这一点。

    3.2 entries目录

    3.2.1 applications 目录

    applications 是程序启动文件放置的位置,一般会有一个以 appid 命名的 desktop 文件放置在这个目录中。目前使用标准的 desktop 格式,相关标准可以参考

    https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.1.html

    一个简单的例子,com.apps.demo.desktop 内容如下:

    Desktop 文件中需要关注的字段为:

    注意:支持应用图标点击出现鼠标加载效果,请在打包时将 desktop文件中的 StartupNotify 参数设置为True

    示例:

    3.2.2 icons目录

    放置应用图标icons,建议路径为icons/hicolor/scalable/apps/com.deepin.demo.svg,使用svg格式图标。

    如果使用非矢量格式,请按照分辨率来放置图标,如:

    支持的分辨率包括:

    16/24/32/48/128/256/512

    3.3 files目录

    存放应用程序需要的各种文件,对于该目录放置文件并无限制,但是建议将可执行程序放置到bin子目录

    4. 文件系统权限


    4.1 系统目录

    系统分区为只读状态,主要用于为应用提供基本的运行依赖库。请不要依据系统目录内容来做任何特性,后期系统将会将应用运行在沙箱中,系统目录中的内容将会都不可信。

    4.2 应用数据目录

    软件包不允许直接向$HOME目录直接写入文件,后期系统将会使用沙箱技术重新定向$HOME,任何依赖该特性的行为都可能失效。

    应用使用如下环境变量指示的目录写入应用数据和配置:

    对于appid为com.deepin.demo的应用,其写入目录为:

    4.3 用户数据目录

    用户数据目录需要用户同意才能进行写入。

    用户数据目录是定义在~/.config/user-dirs.dirs中的路径,~/.config/user-dirs.dirs内容如下:

    一般的UI框架如Qt提供了对数据目录的支持,可以优先考虑使用框架的接口来访问这些目录。

    关于目录的定义,可以参考:

    https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html

    5. 包格式


    5.1 二进制格式

    深度商店支持deb格式的二进制软件包,使用debuild工具进行打包。