探索开明软件包:应用开发指南轻松掌握,快速上手!


开明软件包格式,是openKylin社区Kaiming  SIG为应对传统包格式存在的系统与应用无明确界限、发行版碎片化、兼容性等问题而开发的一款全新软件包格式,满足ISV(Independent Software Vendors)应用发布和应用独立发布需求,并支持沙箱隔离,允许共享部分基础库,为主要Linux桌面提供原生集成。

 

一、开明软件包框架结构

开明软件包主要包括部署文件(deploy)、应用数据(files)、元数据文件(matedata),导出文件(exports)四部分:

  • 部署文件:存放开明包安装来源、安装大小、版本、安装时间等信息

  • 应用数据:应用本身二进制、动态库、配置文件等

  • 元数据文件:包含运行时依赖、扩展依赖、权限信息、二进制命令、环境变量等内容

  • 导出文件:针对应用,主要包含desktop、icon、dbus.service等对外暴露的文件

开明软件包运行过程,首先解析元数据文件,获取到应用运行所需的上下文内容,然后通过mount namespace和bind mount构建应用运行的rootfs,通过xdg-dbus-proxy进行dbus转发,最后chroot进入rootfs环境执行二进制命令启动应用。接下来请跟随文章教程完成您的第一个开明包构建和安装运行。

 

二、开明命令介绍

以下是部分开明软件包使用命令介绍,更多命令详情可参考文末链接:开明命令使用手册

  • kaiming install :安装开明应用

  • kaiming export :离线导出开明应用

  • kaiming list:列出所有已安装的应用

  • kaiming run:运行一个已安装的开明应用

  • kaiming enter :进入运行沙箱内部环境

  • kaiming uninstall:卸载开明应用

  • ......

 

三、编译程序

1.安装开明命令包和开明编译包

$ sudo apt install kaiming kaiming-builder

其中,kaiming ( >= 0.15.9 ) 是包管理器客户端,提供了相关开明命令,用于管理开明包格式应用的安装、卸载、运行、更新、信息查看等操作。kaiming-builder提供了开明包对应的编译命令,可以将您的源码编译成开明软件包格式。

2.安装runtime和配套的SDK

开明包要求每个应用程序指定一个依赖的runtime。runtime由SDK和Platform组成,SDK在应用编译和调试时使用,Platform在应用执行时使用。在编译应用程序时,需要先将runtime下载到本地:

$ sudo kaiming install top.openkylin.Sdk top.openkylin.Platform# 默认编译所需最小的runtime

3.创建应用程序

进入您的项目根目录,这里我们采用一个简单的脚本案例来说明。

#!/bin/shecho "Hello world, start your first kaiming app!"

现在将其粘贴到一个空文件中并将其另存为hello.sh。

4.配置源码所需清单

这里以top.openkylin.Hello.yaml清单文件为例,文件内容:

 

id: top.openkylin.Hello # 应用程序名branch: stable # 应用分支runtime: top.openkylin.Platform # 所需runtimeruntime-version: '2.0' # runtime版本sdk: top.openkylin.Sdk # 配套的SDKcommand: hello.sh # runtime执行的命令modules: # 编译模块- name: hello # 模块名称buildsystem: simple # 使用的构建系统。如autotools、cmake、meson、simple、qmake等build-commands: # 在构建期间运行的一组命令- install -D hello.sh /app/bin/hello.sh # 执行 install 命令将hello.sh 安装到可执行目录sources: # 包含一个指向源码指针,它们可以有多种类型,通过type属性来区分。- type: file # 本地源码类型path: hello.sh # 和type格式对齐,表示将复制到源目录的本地文件的路径

举例程序较为简单,在更复杂的应用程序中,清单将列出多个模块。由于yaml清单涉及内容较多,关于yaml清单的详细描述请参考官方文档说明(链接附在文末)

5.构建应用程序

使用命令kaiming-builder来进行软件包编译:

kaiming-builderbuild top.openkylin.Hello.yaml

如果您想共享该应用程序,可以将其放入存储库中。通过将--repo参数传递给来kaiming-builder来完成:

$ rm -rf build/ repo/ .kaiming-builder/ #第二次编译时需要,删除当前的编译目录、缓存和存储库repo$ kaiming-builder build --repo=repo top.openkylin.Hello.yaml

此命令将构建清单中列出的每个模块并将其安装到本地存储库repo中。其中,生成的build目录是构建后的程序结构。如下图:

我们可以看到,hello.sh是在 files/bin/hello.sh下,这种情况就是正确编译结果,之后会通过kaiming install安装到系统的指定位置/opt/kaiming中。到这里,恭喜您已完成一个应用程序制作

 

四、测试运行

1.安装应用程序

现在我们准备添加刚刚创建的存储库并安装应用程序。通过kaiming install命令完成,要验证构建后的包是否可以成功安装,请运行以下命令:

$ sudo kaiming install --repo=repo top.openkylin.Hello # top.openkylin.Hello 为 top.openkylin.Hello.yaml 清单文件中的应用程序名

2.运行应用程序

接下来,通过以下命令来尝试运行该应用程序:

$ kaiming run top.openkylin.Hello

运行成功,终端输出:

Hello world, start your first kaiming app!

以上是编译开明软件包格式的简单流程,各位小伙伴你学会了吗?更多内容,敬请期待。

  • 开明命令使用手册:
    https://gitee.com/openkylin/community/blob/master/sig/KaiMing/%E5%BC%80%E6%98%8E%E7%94%A8%E6%88%B7%E6%93%8D%E4%BD%9C%E6%89%8B%E5%86%8C/%E5%BC%80%E6%98%8E%E5%91%BD%E4%BB%A4%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C/README.md#/openkylin/community/blob/master/sig/KaiMing/%E5%BC%80%E6%98%8E%E7%94%A8%E6%88%B7%E6%93%8D%E4%BD%9C%E6%89%8B%E5%86%8C/%E5%BC%80%E6%98%8E%E5%91%BD%E4%BB%A4%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C/installation.md

  • yaml清单说明:

    https://gitee.com/openkylin/community/blob/master/sig/KaiMing/%E5%BC%80%E6%98%8E%E7%94%A8%E6%88%B7%E6%93%8D%E4%BD%9C%E6%89%8B%E5%86%8C/%E5%BC%80%E6%98%8E%E7%BC%96%E5%8C%85%E6%89%8B%E5%86%8C/manifest.md​​​​​​​


相關推薦

2024-10-31

in 在智能化道路上迈出了坚实的一步。现在,让我们一同探索 UOS AI 的世界,体验它带来的便捷与高效。 UOS AI 问世 UOS AI 的发布,不仅提升了操作系统的交互模式,还为 deepin 用户带来前所未有的智能体验,可以直接在系

2024-07-27

行版碎片化、兼容性差等问题,openKylin社区全新推出开明软件包格式,目标是为新发布软件提供高兼容性、高安全性的解决方案。   1. 什么是软件包格式 1991年10月5日,Linux诞生,作为一个开放源码的系统,其开放的部

2024-08-09

,上线麒麟AI助手等实用AI功能,并为用户带来包括开明软件包格式、不可变系统、wlcom合成器等在内的多项创新特性及30+新需求,并累计修复bug 3000+,进一步提升系统整体稳定性和兼容性,为用户带来更好体验! openKylin  

2024-07-16

作系统底层核心技术颠覆性变革,引入不可变系统、开明软件包格式和Wlcom窗口管理器等创新特性,使openKylin操作系统在稳定性、安全性、性能和用户体验等方面都达到了新高度。 今天,openKylin 2.0 RC版本正式发布!作为openKylin

2023-05-24

多种语言的调用代码,包括Java、Python、PHP等,让您能够轻松地将海报生成功能集成到现有项目中。只需几行代码,即可实现强大的海报生成能力。 丰富多样的组件库:Fastposter拥有文字、图片、二维码、头像等多种组件,让

2022-09-16

支持跨屏幕开发,现代 Android 开发工具也在简化跨屏幕的应用开发过程,其中 Android Studio 和 Kotlin 编程语言为多设备开发提供了全面的功能和高效的开发体验。 Android 还创建了一套 “大屏幕应用质量指南” 和 “Material Desi

2024-10-15

2)deepin(深度)社区 2024 年 9 月月报 (3)deepin 23 安装指南(全新安装、跨版本升级等)

2023-10-20

要的批处理应用程序提供支持。 主要变化 更新入门指南 新增“两分钟上手教程”,其中包含创建 Spring Batch 项目并实现简单的"Hello world"任务的步骤指南。 当前基于 Spring Boot 的指南已更新到最新的 Spring Boot 3 版本,以

2023-03-01

以很方便的进行二次开发及扩展,如果你懂 Java,你可以轻松对此系统进行任何改动。 源码开放方面,核心源码及大部分功能插件源码都是开放的,只有少部分功能插件的源码不开放,属于授权后才能使用的功能。但这些不开

2023-09-19

,开发者只需掌握 HTML、CSS 和 JavaScript 的基础知识,就能轻松上手。 他还说道,Nue 最大的好处是能够用更少的代码来完成同样的事情——与使用 React 相比,Nue JS 实现同样的功能代码量只有前者的 1/10。 作者称 Nue 消除了 TC

2024-06-04

好Python就足够了。当学生的就业方向是网络开发或者移动应用开发时,会认为熟悉Java已经足够;如果就业方向是网页前端开发,会觉得HTML/JavaScript足够。这样的现状让很多学生缺乏学习C/C++的热情,甚至质疑学习C/C++的必要性。

2022-11-09

以很方便的进行二次开发及扩展,如果你懂Java,你可以轻松对此系统进行任何改动。 源码开放方面,核心源码及大部分功能插件源码都是开放的,只有少部分功能插件的源码不开放,属于授权后才能使用的功能。但这些不开

2024-07-12

我们的官网,还有很多好用的功能和有趣的故事等待你去探索发现。 www.leaferjs.com

2023-10-28

动硬件算力之势,基于smart-socket的服务在通信性能方面可轻松超过其他计算机语言开发的程序,包括且不限于:C/C++、Golang、Rust、Erlang。 推荐理由: 国产化,源码 100% 自研,信创首选产品。 轻量化,生成 jar 包仅 62KB