应用开发至少包含两部分工作: UI页面开发和底层功能开发(部分需要联网的应用还会涉及服务端开发)。前面章节介绍了如何解决页面适配的问题,本章节主要介绍应用如何解决设备系统能力差异的兼容问题。
系统能力SystemCapability使用指南(即SystemCapability,缩写为SysCap)指操作系统中每一个相对独立的特性,如蓝牙、WiFi、NFC、摄像头等,都是系统能力之一。每个系统能力对应多个API,随着目标设备是否支持该系统能力共同存在或消失。
与系统能力相关的,有支持能力集、联想能力集和要求能力集三个核心概念。
开发多设备应用时,工程中默认的要求能力集是多个设备支持能力集的交集,默认的联想能力集是多个设备支持能力集的并集。
开发者可以在运行时动态判断某设备是否支持特定的系统能力。
开发者可以自行修改联想能力集和要求能力集。
动态逻辑判断
如果某个系统能力没有写入应用的要求能力集中,那么在使用前需要判断设备是否支持该系统能力。
canIUse()接口帮助开发者来判断该设备是否支持某个特定的SysCap。
if (canIUse('SystemCapability.Communication.NFC.Core')) {
hilog.info(0x0000, 'Index', `该设备支持SystemCapability.Communication.NFC.Core`);
} else {
hilog.error(0x0000, 'Index', `该设备不支持SystemCapability.Communication.NFC.Core`);
}
配置联想能力集和要求能力集
DevEco Studio会根据创建的工程所支持的设备自动配置联想能力集和要求能力集,同时也支持开发者修改。
{
"devices": {
"general": [
"default",
"tablet"
],
"custom": [
{
"Custom Device": [
"SystemCapability.Communication.SoftBus.Core"
]
}
]
},
"development": {
"addedSysCaps": [
"SystemCapability.Communication.NFC.Core"
]
},
"production": {
"addedSysCaps": [],
"removedSysCaps": []
}
}