UOS应用商店打包规范


风晓
风晓 2024-01-04 10:53:43 51982 赞同 0 反对 0
分类: 资源
简介 本文档描述了UOS应用商店的上架应用打包规范。


1、应用标识(包名)
应用标识/包名(appid)是应用的唯一标识,应用商店只接受使用倒置域名规则命名的应用,如:
com.apps.demo
推荐使用你已经拥有的域名作为应用名称。如果使用未拥有的域名作为前缀,可能会引起该域名拥有者进行申诉,导致你的应用被删除。
2、应用安装
2.1、安装路径
应用的全部安装文件必须在如下目录:
/opt/apps/${appid}/
说明:禁止使用deb的postinst等钩子对系统进行修改,包含这些脚本的软件包都无法上架
3、目录结构
.
├── DEBIAN
│ ├── control
│ └── md5sums
└── opt
└── apps
└── com.apps.demo
├── entries
│ ├── applications
│ │ └── com.apps.demo.desktop
│ ├── icons
│ │ └── hicolor
│ │ └── scalable
│ │ └── apps
│ │ └── com.apps.demo.svg
│ ├── mime
│ │ └── packages
│ │ └── com.apps.demo.xml
│ ├── plugins
│ │ ├── fcitx
│ │ └── libuosinput.so
│ │ └── browser
│ │ └── libuosbrowser.so
│ └── services
│ │ └── com.apps.demo.xml
├── files
│ ├── bin
│ │ └── com.apps.demo
│ ├── doc
│ │ ├── changelog.gz
│ │ └── copyright
│ └── lib
│ └── com.demo.app.so.5.2.1
└── info
20 directories, 13 files
应用根目录下面有entries/files两个目录和一个info文件.
3.1、info文件
info文件是应用的描述文件,使用json格式,info内容如下:
{
“appid”: “com.apps.demo”,
“name”: “Demo”,
“version”: “5.0.0.0”,
“arch”: [“amd64”, “mips64”],
“permissions”: {
“autostart”: false,
“notification”: false,
“trayicon”: false,
“clipboard”: false,
“account”: false,
“bluetooth”: false,
“camera”: false,
“audio_record”: false,
“installed_apps”: false
},
“support-plugins”: [
“plugins/demo”
],
“plugins”: [
“plugins/browser”,
“plugins/fcitx”
]
}
info文件中各个字段的说明如下:

appid:应用标识

name:应用名称

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

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

amd64:x86架构CPU
mips64:龙芯系列CPU
arm64:ARM64位CPU
sw_64:申威CPU
permissions:应用权限描述。

autostart:是否允许自启动
notification:是否允许使用通知
trayicon:是否运行显示托盘图标
clipboard:是否允许使用剪切板
account:是否允许读取登录用户信息
bluetooth:是否允许使用蓝牙设备
camera:是否允许使用视频设备
audio_record:是否允许进行录音
installed_apps:是否允许读取安装软件列表
开发者需要注意,应用只允许使用普通用户权限启动,禁止应用以任何形式获取root权限。
support-plugins: 支持的插件类型
plugins:实现的的插件类型,在对应的plugins目录下,按照实现的插件类型放置文件
3.2、entries目录
存放程序的各种入口文件,一般在entries目录下有applications/autostart/services/plugins/icons等目录.开发者请按规范将对应的文件放到指定的目录进行打包,安装完成之后系统会自动链接到对应目录。
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 Entry]
Categories=Audio;AudioVideo;Qt;
Name=Deepin Demo
GenericName=Demo
Type=Application
Exec=/opt/apps/com.apps.demo/files/bin/com.apps.demo %F
Icon=com.apps.demo
MimeType=audio/musepack;application/musepack;application/x-ape;audio/ape;audio/x-ape;audio/x-musepack;application/x-musepack;audio/x-mp3;application/x-id3;audio/mpeg;audio/x-mpeg;audio/x-mpeg-3;audio/mpeg3;audio/mp3;audio/x-m4a;audio/mpc;audio/x-mpc;audio/mp;audio/x-mp;application/ogg;application/x-ogg;audio/vorbis;audio/x-vorbis;audio/ogg;audio/x-ogg;audio/x-flac;application/x-flac;audio/flac;audio/3gp;audio/imy;audio/midi;audio/x-mpeg-4;audio/mpeg4;audio/mp4;audio/xmf;audio/x-wav;application/x-wav;audio/x-ms-wma;application/x-ms-wma;audio/aac;application/aac;
Comment[zh_CN]=为您播放本地及网络音频流
GenericName[zh_CN]=音乐
Name[zh_CN]=音乐

Desktop文件中需要关注的字段为:
Exec:程序的入口,后期会被沙箱启动。
MimeType:程序支持的关联类型
示例:

打包路径
entries/applications/com.apps.demo.desktop
安装路径
p/usr/share/applications/com.apps.demo.desktop
3.2.2、autostart目录
程序自启动入口文件。注意如果需要程序自启动,请在info文件中配置打开自启动权限,即设置autostart为true。
自启动权限为高风险权限,用户可以在不告知应用的情况下关闭应用的自启动权限。、

打包路径
entries/autostart/com.apps.demo.desktop
安装路径
/etc/xdg/autostart/com.apps.demo.desktop
3.2.3、services目录
程序注册的dbus服务目录,例如:
[D-BUS Service]
Name=com.apps.demo
Exec=/opt/apps/com.apps.demo/files/bin/com.apps.demo --dbus
一个应用只允许配置一个service。
示例:

打包路径
entries/services/com.apps.demo.xml
安装路径
/usr/share/dbus-1/service/com.apps.demo.xml
3.2.4、plugins目录
plugins目录放置提供给其他应用使用的内容,plugins目录下面可以有多个子目录。plugins的目的是为了其他应用提供一种插件机制,使得其他应用程序可以访问本应用提供的内容。
1、在plugins目录中,必须以目标的插件类型(plugin-mimetype)子目录名称,在对应的插件类型子目录中放置需要共享给宿主应用的内容。
2、一个应用可以给多个应用提供插件,需要对每一个插件类型创建对应的子目录,并在里面放置共享的内容。
3、需要在描述文件中列出需要注入宿主应用的插件类型。
技术上,安装器将会根据info文件描述的plugins列表,将对应插件link到相关程序的/opt/apps/t a r g e t a p p i d / p l u g i n s / {target_appid}/plugins/target 
a

 ppid/plugins/{plugin-mimetype} 目录中, 同时在宿主应用程序启动时会设置一个APP_PLUGIN_DIR,使得宿主程序可以获取注入的内容。
注意事项:
1、desktop/service请指向自己的应用目录的/opt/apps/com.apps.demo/files目录下的文件。
2、对于特殊的应用,有多个入口的desktop文件,表示功能不同的程序。对于这种需要有多个入口的程序,采用严格限制的白名单方式进行申请。一般应用程序不允许有多个入口的desktop文件。
3、在plugins机制中,plugins的每一个子目录以及主程序目录均是无法相互访问的,在开发过程中请尤其注意这一点。
示例:
|

打包路径
entries/plugins/fcitx/libuosinput.so
entries/plugins/browser/libuosbrowser.so
安装路径
/usr/lib/x86_64-linux-gnu/fcitx/libuosinput.so
/usr/lib/mozilla/plugins/libuosbrowser.so
3.2.5、icons目录
放置应用图标icons,目录结构与系统icons目录结构保持一致即可,建议路径为icons/hicolor/scalable/apps/com.apps.demo.svg,使用svg格式图标。
如果使用非矢量格式,请按照分辨率来放置图标,如:
icons/hicolor/24x24/apps/com.apps.demo.png
icons/hicolor/16x16/apps/com.apps.demo.png
支持的分辨率包括: 16/24/32/48/128/256/512。
示例:

打包路径
icons/hicolor/scalable/apps/com.apps.demo.svg
icons/hicolor/24x24/apps/com.apps.demo.png
icons/hicolor/16x16/apps/com.apps.demo.png
安装路径
/usr/share/icons/hicolor/scalable/apps/com.apps.demo.svg
/usr/share/icons/hicolor/24x24/apps/com.apps.demo.png
/usr/share/icons/hicolor/16x16/apps/com.apps.demo.png
3.2.6、polkit目录
polkit 是一个应用程序级别的工具集,通过定义和审核权限规则,实现不同优先级进程间的通讯:控制决策集中在统一的框架之中,决定低优先级进程是否有权访问高优先级进程。该目录用于存放polkit配置文件,文件是 XML 格式,以 .policy 结尾,目录结构与系统polkit目录结构保持一致即可。
示例:

打包路径
polkit/actions/com.apps.demo.policy
安装路径
/usr/share/polkit-1/actions/com.apps.demo.policy
3.2.7、mime目录
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。该目录用于存放mime配置文件,目录结构与系统mime目录结构保持一致即可,文件是XML格式,以.xml结尾。
示例:

打包路径
mime/packages/com.apps.demo.xml
安装路径
/usr/share/mime/packages/com.apps.demo.xml
3.2.8、fonts目录
存放字体和配置文件,包含files和conf两个子目录。
files用来保存字体文件目录结构与系统fonts目录结构保持一致即可
conf目录用来存放字体配置
示例:

打包路径
fonts/files/truetype/wenquanyi.ttf
fonts/conf.d/57-wenquanyi.conf
安装路径
/usr/share/fonts/truetype/wenquanyi.ttf
/etc/fonts/conf.d/57-wenquanyi.conf
3.2.10、fcitx目录
fcitx是一个以 GPL 方式发布的输入法平台,可以通过安装引擎支持多种输入法,支持简入繁出,是在 Linux 操作系统中常用的中文输入法,用于保存皮肤、自定义标点、码表等信息。目录结构与系统fcitx目录结构保持一致即可,需要跟entries/plugins/fcitx下的输入法插件库配合使用。
示例:

打包路径
fcitx/skin/dark/pinyin.png
安装路径
/usr/share/fcitx/skin/dark/pinyin.png
3.3、files目录
存放应用程序需要的各种文件,对于该目录放置文件并无限制,但是建议将可执行程序放置到bin子目录。应用程序或者插件依赖的第三方库请放置在/opt/apps/a p p i d / f i l e s / l i b 目 录 , 启 动 时 建 议 使 用 脚 本 添 加 环 境 变 量 启 动 , 不 允 许 安 装 到 系 统 目 录 。 ∗ 说 明 : l i b 目 录 下 的 库 请 不 要 相 互 依 赖 , 否 则 可 能 会 导 致 应 用 插 件 库 加 载 不 正 常 ∗ ∗ ∗ 4 、 文 件 系 统 权 限 ∗ ∗ ∗ 4.1 、 系 统 目 录 ∗ 系 统 分 区 为 只 读 状 态 , 主 要 用 于 为 应 用 提 供 基 本 的 运 行 依 赖 库 。 请 不 要 依 据 系 统 目 录 内 容 来 做 任 何 特 性 , 后 期 系 统 将 会 将 应 用 运 行 在 沙 箱 中 , 系 统 目 录 中 的 内 容 将 会 都 不 可 信 。 ∗ 4.2 、 用 户 目 录 ∗ 软 件 包 不 允 许 直 接 向 {appid}/files/lib目录,启动时建议使用脚本添加环境变量启动,不允许安装到系统目录。 *说明:lib目录下的库请不要相互依赖,否则可能会导致应用插件库加载不正常* **4、文件系统权限** *4.1、系统目录* 系统分区为只读状态,主要用于为应用提供基本的运行依赖库。请不要依据系统目录内容来做任何特性,后期系统将会将应用运行在沙箱中,系统目录中的内容将会都不可信。 *4.2、用户目录* 软件包不允许直接向appid/files/lib目录,启动时建议使用脚本添加环境变量启动,不允许安装到系统目录。∗说明:lib目录下的库请不要相互依赖,否则可能会导致应用插件库加载不正常∗∗∗4、文件系统权限∗∗∗4.1、系统目录∗系统分区为只读状态,主要用于为应用提供基本的运行依赖库。请不要依据系统目录内容来做任何特性,后期系统将会将应用运行在沙箱中,系统目录中的内容将会都不可信。∗4.2、用户目录∗软件包不允许直接向HOME目录直接写入文件,后期系统将会使用沙箱技术重新定向$HOME,任何依赖该特性的行为都可能失效。
建议应用使用如下环境变量写入数据和配置:
$XDG_DATA_HOME
$XDG_CONFIG_HOME
$XDG_CACHE_HOME
以下目录可能需要用户同意才能进行写入

XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_VIDEOS_DIR="$HOME/Videos"
关于目录的定义,可以参考:
https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  127
统信桌面专业版【全盘安装UOS系统】介绍  122
银河麒麟桌面操作系统安装佳能打印机驱动方法  114
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!