商店打包规范
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工具进行打包。