Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
9fa4339e
D
Docs
项目概览
OpenHarmony
/
Docs
接近 2 年 前同步成功
通知
159
Star
292
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看板
未验证
提交
9fa4339e
编写于
11月 28, 2022
作者:
Z
zengyawen
提交者:
Gitee
11月 28, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
描述优化
Signed-off-by:
N
zengyawen
<
zengyawen1@huawei.com
>
上级
4b738d24
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
30 addition
and
50 deletion
+30
-50
zh-cn/application-dev/quick-start/syscap.md
zh-cn/application-dev/quick-start/syscap.md
+30
-50
未找到文件。
zh-cn/application-dev/quick-start/syscap.md
浏览文件 @
9fa4339e
#
SysCap
使用指南
#
系统能力SystemCapability
使用指南
## 概述
## 概述
### 系统能力与 API
### 系统能力与 API
SysCap,全称SystemCapability,即系统能力,指操作系统中每一个相对独立的特性,如蓝牙,WIFI,NFC,摄像头等,都是系统能力之一。每个系统能力对应多个
API,这些 API 绑定在一起,随着目标设备是否支持该系统能力共同存在或消失,也会随着 IDE
一起提供给开发者做联想。
SysCap,全称SystemCapability,即系统能力,指操作系统中每一个相对独立的特性,如蓝牙,WIFI,NFC,摄像头等,都是系统能力之一。每个系统能力对应多个
API,随着目标设备是否支持该系统能力共同存在或消失,也会随着DevEco Studio
一起提供给开发者做联想。


开发者可以在
[
SysCap列表
](
../reference/syscap-list.md
)
中查询OpenHarmony的能力集。
开发者可以在
[
SysCap列表
](
../reference/syscap-list.md
)
中查询OpenHarmony的能力集。
### 支持能力集,联想能力集与要求能力集
### 支持能力集,联想能力集与要求能力集
支持能力集,联想能力集与要求能力集都是系统能力的集合。
支持能力集,联想能力集与要求能力集都是系统能力的集合。
支持能力集描述的是设备能力,要求能力集描述的是应用能力。若应用A的要求能力集是设备N的支持能力集的子集,则应用A可分发到设备N上安装运行,否则不能分发。
支持能力集描述的是设备能力,要求能力集描述的是应用能力。若应用A的要求能力集是设备N的支持能力集的子集,则应用A可分发到设备N上安装运行,否则不能分发。
联想能力集是该应用开发时,
IDE 可联想的 API
所在的系统能力集合。
联想能力集是该应用开发时,
DevEco Studio可联想的API
所在的系统能力集合。


### 设备与支持能力集
### 设备与支持能力集
每个设备根据其硬件能力,对应不同的支持能力集。
每个设备根据其硬件能力,对应不同的支持能力集。
SDK
将设备分为两组,典型设备和自定义设备,典型设备的支持能力集由 OpenHarmony
来定义,自定义设备由设备厂商给出。
SDK
将设备分为两组,典型设备和自定义设备,典型设备的支持能力集由OpenHarmony
来定义,自定义设备由设备厂商给出。


### 设备与SDK能力的对应
### 设备与SDK能力的对应
SDK
提供全量的 API 给 IDE,IDE 通过开发者的项目支持的设备,找到该设备的支持能力集,筛选支持能力集包含的 API 提供给开发者做
联想。
SDK
向DevEco Studio提供全量API,DevEco Studio识别开发者项目中选择的设备形态,找到该设备的支持能力集,筛选支持能力集包含的API并提供API
联想。


## SysCap开发指导
## SysCap开发指导
### PCID获取
### PCID获取
PCID,全称 Product Compatibility ID,包含当前设备支持的 syscap 信息。获取所有设备 PCID 的认证中心正在建设中,目前需要找对应设备的厂商获取该设备的 PCID。
PCID,全称Product Compatibility ID,包含当前设备支持的SysCap信息。获取所有设备PCID的认证中心正在建设中,目前需要找对应设备的厂商获取该设备的PCID。
### PCID导入
### PCID导入
DevEco Studio
工程支持 PCID 的导入。导入的 PCID 文件解码后输出的 syscap 会被写入 syscap.json
文件中。
DevEco Studio
工程支持PCID的导入。导入的PCID文件解码后输出的SysCap会被写入syscap.json
文件中。
在工程目录右键后选择
Import Product Compatibility ID,即可上传 PCID 文件并导入至 syscap.json
中。
在工程目录右键后选择
Import Product Compatibility ID,即可上传PCID文件并导入至syscap.json
中。


### 配置联想能力集和要求能力集
### 配置联想能力集和要求能力集
IDE
会根据创建的工程所支持的设置自动配置联想能力集和要求能力集,开发者也可以自行修改。
DevEco Studio
会根据创建的工程所支持的设置自动配置联想能力集和要求能力集,开发者也可以自行修改。
对于联想能力集,开发者通过添加更多的系统能力,在
IDE 中可以使用更多的 API,但要注意这些 API
可能在设备上不支持,使用前需要判断。
对于联想能力集,开发者通过添加更多的系统能力,在
DevEco Studio中可以使用更多的API,但要注意这些API
可能在设备上不支持,使用前需要判断。
对于要求能力集,开发者修改时要十分慎重,修改不当会导致应用无法分发到目标设备上。
对于要求能力集,开发者修改时要十分慎重,修改不当会导致应用无法分发到目标设备上。
```
json
```
json
...
@@ -91,51 +79,44 @@ IDE 会根据创建的工程所支持的设置自动配置联想能力集和要
...
@@ -91,51 +79,44 @@ IDE 会根据创建的工程所支持的设置自动配置联想能力集和要
}
}
```
```
### 单设备应用开发
### 单设备应用开发
默认应用的联想能力集,要求系统能力集和设备的支持系统能力集相等,开发者修改要求能力集需要慎重。
默认应用的联想能力集,要求系统能力集和设备的支持系统能力集相等,开发者修改要求能力集需要慎重。


### 跨设备应用开发
### 跨设备应用开发
默认应用的联想能力集是多个设备支持能力集的并集,要求能力集则是交集。
默认应用的联想能力集是多个设备支持能力集的并集,要求能力集则是交集。


### 判断 API 是否可以使用
### 判断 API 是否可以使用
首先我们定义了 API canIUse
帮助开发者来判断该工程是否支持某个特定的syscap。
-
方法1:OpenHarmony定义了API canIUse
帮助开发者来判断该工程是否支持某个特定的syscap。
```
```
if (canIUse("SystemCapability.ArkUI.ArkUI.Full")) {
if (canIUse("SystemCapability.ArkUI.ArkUI.Full")) {
console.log("该应用支持SystemCapability.ArkUI.ArkUI.Full");
console.log("该应用支持SystemCapability.ArkUI.ArkUI.Full");
} else {
} else {
console.log("该应用不支持SystemCapability.ArkUI.ArkUI.Full");
console.log("该应用不支持SystemCapability.ArkUI.ArkUI.Full");
}
}
```
```
开发者可通过 import 的方式将模块导入,若当前设备不支持该模块,import 的结果为 undefined,开发者在使用其 API 时,需要判断其是否存在。
```
-
方法2:开发者可通过 import 的方式将模块导入,若当前设备不支持该模块,import 的结果为 undefined,开发者在使用其 API 时,需要判断其是否存在。
import geolocation from '@ohos.geolocation';
if (geolocation) {
geolocation.getCurrentLocation((location) => {
console.log(location.latitude, location.longitude);
});
} else {
console.log('该设备不支持位置信息');
}
```
```
import geolocation from '@ohos.geolocation';
if (geolocation) {
geolocation.getCurrentLocation((location) => {
console.log(location.latitude, location.longitude);
});
} else {
console.log('该设备不支持位置信息');
}
```
除此之外,开发者可以通过API参考文档查询API接口所属的SysCap。
### 不同设备相同能力的差异检查
### 不同设备相同能力的差异检查
...
@@ -159,7 +140,6 @@ authenticator.execute('FACE_ONLY', 'S1', (err, result) => {
...
@@ -159,7 +140,6 @@ authenticator.execute('FACE_ONLY', 'S1', (err, result) => {
})
})
```
```
### 设备间的SysCap差异如何产生的
### 设备间的SysCap差异如何产生的
设备的SysCap因产品解决方案厂商拼装的部件组合不同而不同,整体流程如下图:
设备的SysCap因产品解决方案厂商拼装的部件组合不同而不同,整体流程如下图:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录