From 157c805469909002fb9e09117605c6b1b0092ea7 Mon Sep 17 00:00:00 2001 From: xlei1030 Date: Sat, 12 Mar 2022 15:21:19 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0appspawnw=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xlei1030 --- .../subsys-boot-appspawn-standard.md | 166 ++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md diff --git a/zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md b/zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md new file mode 100644 index 00000000000..70383aef279 --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md @@ -0,0 +1,166 @@ +# appspawn标准系统应用孵化组件 + +- [概述](#section56901555910) + - [功能简介](#section56901555911) + - [基本概念](#section56901555912) +- [开发指导](#section56901555913) + - [接口说明](#section56901555914) + - [开发实例](#section56901555915) +- [常见问题](#section56901555916) + - [冷启动失败](#section56901555917) + +## 概述 + +appspawn被init启动后,等待接收进程间消息,根据消息内容启动应用服务并赋予其对应权限。 + +### 功能简介 + +- 安全控制 + - 支持为app设置SELinux标签 + +- 应用进程控制 + + - 支持为app设置AccessToken + - 支持重启前,appspawn停止后,可同时停止所有已孵化的app进程 + +- 冷启动 + - 支持应用通过aa命令冷启动应用 + + ``` + param set appspawn.cold.boot true // 打开冷启动状态 + aa start -d 12345 -a $name -b $package -C + 参考: + aa start -d 12345 -a ohos.acts.startup.sysparam.function.MainAbility -b ohos.acts.startup.sysparam.function -C + +### 基本概念 + +appspawn注册的服务名称为“appspawn”, appspawn 通过监听本地socket,接收来自客户端的请求消息,消息格式定义如下: + +**表 1** 字段说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

字段名

+

说明

+

processName

+

即将启动的应用服务进程名,最大256字节。

+

bundleName

+

即将启动的应用程序包名,最大256字节。

+

soPath

+

应用程序指定的动态库的路径,最大256字节。

+

uid

+

即将启动的应用进程的uid,必须为正值。

+

gid

+

即将启动的应用进程的gid,必须为正值。

+

gidTable

+

即将启动的应用进程组信息,长度由gidCount指定,最大支持64个进程组,必须为正值。

+

gidCount

+

即将启动的应用进程组个数。

+

accessTokenId

+

应用进程权限控制的token id。

+

apl

+

应用进程权限控制的apl,最大32字节。

+
+ +## 开发指导 + + 通过 “base/startup/appspawn_standard/interfaces/innerkits/include/client_socket.h“ 头文件查看 + +### 接口说明 + +**表 2** 字段说明 + + + + + + + + + + + + + + + + + + + + +

字段名

+

说明

+

CreateClient

+

创建client。

+

CloseClient

+

关闭client。

+

ConnectSocket

+

向appspawn服务发起连接请求。

+

WriteSocketMessage

+

发送消息到appspawn服务。

+

ReadSocketMessage

+

接收来自appspawn服务的消息。

+
+ +### 开发实例 + +``` + std::shared_ptr clientSocket = std::make_unique("AppSpawn"); + if (clientSocket == nullptr) { + return -1; + } + if (clientSocket->CreateClient() != ERR_OK) { + return -1; + } + if (clientSocket->ConnectSocket() != ERR_OK) { + return -1;; + } + // property 构造AppProperty + clientSocket->WriteSocketMessage((void *)&property, sizeof(AppSpawn::AppProperty)); + // 读结果 + int pid; + clientSocket->ReadSocketMessage((void *)&pid, sizeof(pid)); + // 如果失败,返回pid如果小于等于0,则错误,否则返回应用的进程id +``` + +## 常见问题 + +### 冷启动失败 + +- **现象描述** + 通过命令冷启动应用失败 + +- **解决方法** + 1. 确认是否打开冷启动设置 + 2. 确认冷启动命令是否正确 \ No newline at end of file -- Gitee From f72131cfd557ad450d4848d3b8dcc00cdb25397a Mon Sep 17 00:00:00 2001 From: xlei1030 Date: Mon, 14 Mar 2022 22:28:06 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E6=84=8F=E8=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xlei1030 --- zh-cn/device-dev/subsystems/Readme-CN.md | 1 + .../subsys-boot-appspawn-standard.md | 39 ++++++++++--------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/zh-cn/device-dev/subsystems/Readme-CN.md b/zh-cn/device-dev/subsystems/Readme-CN.md index 40e9f6ae1fd..5614b215859 100755 --- a/zh-cn/device-dev/subsystems/Readme-CN.md +++ b/zh-cn/device-dev/subsystems/Readme-CN.md @@ -74,6 +74,7 @@ - [启动恢复子系统概述](subsys-boot-overview.md) - [init启动引导组件](subsys-boot-init.md) - [appspawn应用孵化组件](subsys-boot-appspawn.md) + - [appspawn标准系统应用孵化组件](subsys-boot-appspawn-standard.md) - [bootstrap服务启动组件](subsys-boot-bootstrap.md) - [syspara系统属性组件](subsys-boot-syspara.md) - [常见问题](subsys-boot-faqs.md) diff --git a/zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md b/zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md index 70383aef279..27b637ec616 100644 --- a/zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md +++ b/zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md @@ -1,13 +1,13 @@ # appspawn标准系统应用孵化组件 -- [概述](#section56901555910) - - [功能简介](#section56901555911) - - [基本概念](#section56901555912) -- [开发指导](#section56901555913) - - [接口说明](#section56901555914) - - [开发实例](#section56901555915) -- [常见问题](#section56901555916) - - [冷启动失败](#section56901555917) +- [概述]() + - [功能简介]() + - [基本概念]() +- [开发指导]() + - [接口说明]() + - [开发实例]() +- [常见问题]() + - [冷启动失败]() ## 概述 @@ -16,15 +16,15 @@ appspawn被init启动后,等待接收进程间消息,根据消息内容启 ### 功能简介 - 安全控制 - - 支持为app设置SELinux标签 +
  支持为app设置SELinux标签。 - 应用进程控制 - - 支持为app设置AccessToken - - 支持重启前,appspawn停止后,可同时停止所有已孵化的app进程 + - 支持为app设置AccessToken。 + - 支持重启前,appspawn停止后,可同时停止所有已孵化的app进程。 - 冷启动 - - 支持应用通过aa命令冷启动应用 +
  支持应用通过aa命令冷启动应用。 ``` param set appspawn.cold.boot true // 打开冷启动状态 @@ -34,7 +34,7 @@ appspawn被init启动后,等待接收进程间消息,根据消息内容启 ### 基本概念 -appspawn注册的服务名称为“appspawn”, appspawn 通过监听本地socket,接收来自客户端的请求消息,消息格式定义如下: +appspawn注册的服务名称为“appspawn”, appspawn 通过监听本地socket,接收来自客户端的请求消息。消息类型为AppProperty的结构体, 定义路径为:“base/startup/appspawn_standard/interfaces/innerkits/include/sclient_socket.h“。 **表 1** 字段说明 @@ -94,7 +94,7 @@ appspawn注册的服务名称为“appspawn”, appspawn 通过监听本地socke ## 开发指导 - 通过 “base/startup/appspawn_standard/interfaces/innerkits/include/client_socket.h“ 头文件查看 + 接口定义路径: “base/startup/appspawn_standard/interfaces/innerkits/include/client_socket.h“,表 2为接口说明。 ### 接口说明 @@ -135,6 +135,7 @@ appspawn注册的服务名称为“appspawn”, appspawn 通过监听本地socke ### 开发实例 +
  接口使用参考方式: ``` std::shared_ptr clientSocket = std::make_unique("AppSpawn"); if (clientSocket == nullptr) { @@ -158,9 +159,9 @@ appspawn注册的服务名称为“appspawn”, appspawn 通过监听本地socke ### 冷启动失败 -- **现象描述** - 通过命令冷启动应用失败 +   **现象描述** +
    通过命令冷启动应用失败 -- **解决方法** - 1. 确认是否打开冷启动设置 - 2. 确认冷启动命令是否正确 \ No newline at end of file +   **解决方法** +
    1. 确认是否打开冷启动设置 +
    2. 确认冷启动命令是否正确 \ No newline at end of file -- Gitee From 87d5dd1683afef334cae111ab322c4811c4c523b Mon Sep 17 00:00:00 2001 From: xlei1030 Date: Tue, 15 Mar 2022 10:43:29 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xlei1030 --- .../subsystems/subsys-boot-appspawn-standard.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md b/zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md index 27b637ec616..fece7994402 100644 --- a/zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md +++ b/zh-cn/device-dev/subsystems/subsys-boot-appspawn-standard.md @@ -1,14 +1,5 @@ # appspawn标准系统应用孵化组件 -- [概述]() - - [功能简介]() - - [基本概念]() -- [开发指导]() - - [接口说明]() - - [开发实例]() -- [常见问题]() - - [冷启动失败]() - ## 概述 appspawn被init启动后,等待接收进程间消息,根据消息内容启动应用服务并赋予其对应权限。 -- Gitee