Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
b11e1411
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b11e1411
编写于
5月 31, 2022
作者:
L
laiguizhong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加应用沙盒指导
Signed-off-by:
N
laiguizhong
<
laiguizhong@huawei.com
>
上级
493933c2
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
178 addition
and
136 deletion
+178
-136
zh-cn/device-dev/subsystems/Readme-CN.md
zh-cn/device-dev/subsystems/Readme-CN.md
+1
-1
zh-cn/device-dev/subsystems/subsys-boot-appspawn.md
zh-cn/device-dev/subsystems/subsys-boot-appspawn.md
+177
-135
未找到文件。
zh-cn/device-dev/subsystems/Readme-CN.md
浏览文件 @
b11e1411
...
...
@@ -74,7 +74,7 @@
-
启动恢复
-
[
启动恢复子系统概述
](
subsys-boot-overview.md
)
-
[
init启动引导组件
](
subsys-boot-init.md
)
-
[
appspawn应用孵化组件
](
subsys-boot-appspawn
-standard
.md
)
-
[
appspawn应用孵化组件
](
subsys-boot-appspawn.md
)
-
[
bootstrap服务启动组件
](
subsys-boot-bootstrap.md
)
-
[
syspara系统属性组件
](
subsys-boot-syspara.md
)
-
[
常见问题
](
subsys-boot-faqs.md
)
...
...
zh-cn/device-dev/subsystems/subsys-boot-appspawn
-standard
.md
→
zh-cn/device-dev/subsystems/subsys-boot-appspawn.md
浏览文件 @
b11e1411
...
...
@@ -17,9 +17,9 @@ appspawn接收的消息为json格式,如下所示:
| 字段名 | 说明 |
| -------- | -------- |
| bundleName | 即将启动的应用服务进程名,长度≥7字节,≤127字节。 |
| identityID | AMS为新进程生成的标识符,由appspawn透传给新进程,长度≥1字节,≤24字节
|
| uID | 即将启动的应用服务进程的uID
,必须为正值。 |
| gID | 即将启动的应用服务进程的gID
,必须为正值。 |
| identityID | AMS为新进程生成的标识符,由appspawn透传给新进程,长度≥1字节,≤24字节
。 |
| uID | 即将启动的应用服务进程的uID
。 |
| gID | 即将启动的应用服务进程的gID
。 |
| capability | 即将启动的应用服务进程所需的capability权限,数量≤10个。 |
## 标准系统
...
...
@@ -35,8 +35,8 @@ appspawn注册的服务名称为“appspawn”。appspawn 通过监听本地sock
| processName | 即将启动的应用服务进程名,最大256字节。 |
| bundleName | 即将启动的应用程序包名,最大256字节。 |
| soPath | 即应用程序指定的动态库的路径,最大256字节。 |
| uid | 即将启动的应用进程的uid
,必须为正值。 |
| gid | 即将启动的应用进程的gid
,必须为正值。 |
| uid | 即将启动的应用进程的uid
。 |
| gid | 即将启动的应用进程的gid
。 |
| gidTable | 即将启动的应用进程组信息,长度由gidCount指定,最大支持64个进程组,必须为正值。 |
| gidCount | 即将启动的应用进程组个数。 |
| accessTokenId | 即应用进程权限控制的token id。 |
...
...
@@ -49,10 +49,10 @@ appspawn注册的服务名称为“appspawn”。appspawn 通过监听本地sock
### 功能简介<a name="section56901555911"></a>
-
安全控制
<br>
 
支持为app设置SELinux标签。
<br>
 
支持为app设置SELinux标签。
SELinux标签接口代码如下:
```
```
c++
AppSpawnClientExt
*
appProperty
=
(
AppSpawnClientExt
*
)
client
;
HapContext
hapContext
;
ret
=
hapContext
.
HapDomainSetcontext
(
appProperty
->
property
.
apl
,
appProperty
->
property
.
processName
);
...
...
@@ -76,7 +76,7 @@ appspawn注册的服务名称为“appspawn”。appspawn 通过监听本地sock
```
-
冷启动
<br>
 
支持通过aa命令冷启动应用。
<br>
 
支持通过aa命令冷启动应用。
```
param set appspawn.cold.boot true // 打开冷启动开关
...
...
@@ -85,6 +85,48 @@ appspawn注册的服务名称为“appspawn”。appspawn 通过监听本地sock
aa start -d 12345 -a ohos.acts.startup.sysparam.function.MainAbility -b ohos.acts.startup.sysparam.function -C
```
-
应用沙盒
<br>
 
应用独立运行于自身沙盒环境。
沙盒配置项:
1.
应用沙盒的配置入口,在json中配置。
2.
根据应用需要,结合沙盒目录化的规范,在下列三个json文件中,添加应用依赖的目录或文件。
沙盒配置文件如下:
```
c++
namespace
{
#ifdef __aarch64__
const
std
::
string
APP_JSON_CONFIG
(
"/system/etc/sandbox/appdata-sandbox64.json"
);
#else
const
std
::
string
APP_JSON_CONFIG
(
"/system/etc/sandbox/appdata-sandbox.json"
);
#endif
const
std
::
string
PRODUCT_JSON_CONFIG
(
"/system/etc/sandbox/product-sandbox.json"
);
}
```
沙盒流程:
1.
读取/修改沙盒配置文件。
2.
解析json文件中的配置项。
3.
调用mount与link的函数实现挂载和隔离。
json文件中配置项如下:
```
json
{
"src-path"
:
"/sys_prod"
,
"sandbox-path"
:
"/sys_prod"
,
"sandbox-flags"
:
[
"bind"
,
"rec"
],
"check-action-status"
:
"false"
}
{
"target-name"
:
"/system/bin"
,
"link-name"
:
"/bin"
,
"check-action-status"
:
"false"
}
```
调用mount与link的函数。即,将src-path挂载至sandbox-path路径下。
```
c++
int
SandboxUtils
::
DoAllMntPointsMount
(
const
ClientSocket
::
AppProperty
*
appProperty
,
nlohmann
::
json
&
appConfig
);
int
SandboxUtils
::
DoAllSymlinkPointslink
(
const
ClientSocket
::
AppProperty
*
appProperty
,
nlohmann
::
json
&
appConfig
);
```
### 开发指导<a name="section56901555913"></a>
接口定义路径: “/interfaces/innerkits/include/client_socket.h“,接口说明参见表3。
...
...
@@ -103,8 +145,8 @@ appspawn注册的服务名称为“appspawn”。appspawn 通过监听本地sock
#### 开发实例<a name="section56901555915"></a>
<br>
 
接口使用参考:
```
<br>
 
接口使用参考:
```
std::shared_ptr<AppSpawn::ClientSocket> clientSocket = std::make_unique<AppSpawn::ClientSocket>("AppSpawn");
if (clientSocket == nullptr) {
return -1;
...
...
@@ -121,15 +163,15 @@ appspawn注册的服务名称为“appspawn”。appspawn 通过监听本地sock
int pid;
clientSocket->ReadSocketMessage((void *)&pid, sizeof(pid));
// 如果失败,返回pid小于等于0;否则返回应用的进程id
```
```
### 常见问题<a name="section56901555916"></a>
#### 冷启动应用失败<a name="section56901555917"></a>
 
**现象描述**
<br>
 
 
通过命令冷启动应用失败。
 
**现象描述**
<br>
  
通过命令冷启动应用失败。
 
**解决方法**
<br>
 
 
1. 确认是否打开冷启动设置。
<br>
 
 
2. 确认冷启动命令是否正确。
 
**解决方法**
<br>
  
1. 确认是否打开冷启动设置。
<br>
  
2. 确认冷启动命令是否正确。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录