1@page component 组件介绍
2
3[更正文档](https://gitee.com/alios-things/documentation/edit/rel_3.3.0/manual/component.md)      [贡献说明](https://help.aliyun.com/document_detail/302301.html)
4
5组件(Component)是构成Alios Things的基本单元。从系统角度看,除了构建脚本和辅助工具外,一切都是组件;根据组件的应用范围,可以将组件划分为以下三类:
6   - BSP组件:指的是./hardware目录下的arch、chip、board三大组件的集合。包含了芯片架构、芯片驱动、板级区别等。
7   - 内核组件:指的是./kernel目录下的RTOS内核的集合。其中rhino内核是AliOS Things提供的最小内核功能集。
8   - 系统组件:指的是./components下所有系统组件的集合
9   - 应用组件:指的是./solutions下的所有HaaS参考案例,包含helloworld_demo,云端一体/ 云端钉一体的参考设计等。
10
11本文描述的组件主要是./components下面的系统组件部分。
12
13**组件之间的关系**
14
15原则上组件功能应该相对独立,可以单独对外提供接口和服务。但是在某些场景中,组件之间需要互相配合来一起完成一项复杂的功能。整理来看组件之间的关系可以分为必须组件和可选组件两种。
16   - 必选依赖:是指组件A在完成某个功能时,必须引入组件B,一起配合。例如:HTTP组件,完成访问HTTP服务器的功能,必须引入TCP/IP组件。
17   - 可选依赖:是指组件A在完成某个功能时,可以引入组件C,也可以引入组件D。例如:HTTP组件,要访问HTTPS服务器,可以引入mbedtls组件,也可以引入openssl组件,来完成访问服务器中加解密的功能。
18
19**组件的构成**
20
21为了使OS能被灵活地配置,适应多种硬件平台,AliOS Things的组件主要包含以下几个部分。
22   - include: 指的是该组件对外暴露的API接口定义。
23   - internal: 指的是该组件内部使用的API接口定义。
24   - src: 指的是该组件的源码实现部分。
25   - example: 组件使用示例代码。
26   - README.md: 组件介绍文档,包含概述、版权信息、目录结构、依赖组件、常用配置、API描述、使用示例、关键日志、FAQ等信息。
27   - package.yaml: AliOS Things 3.3版本采用的编译脚本。详细的.yaml语法信息可以参考《yaml语法说明》文章。
28
29
30@subpage a2sa \n
31@subpage ai_agent \n
32@subpage ble_host \n
33@subpage ble_netconfig \n
34@subpage cjson \n
35@subpage cli \n
36@subpage cplusplus \n
37@subpage debug \n
38@subpage driver \n
39@subpage epoll \n
40@subpage fatfs \n
41@subpage freetype \n
42@subpage http \n
43@subpage init \n
44@subpage jsoncpp \n
45@subpage kv \n
46@subpage libc_stub \n
47@subpage linksdk \n
48@subpage littlefs \n
49@subpage lwip \n
50@subpage mbedtls \n
51@subpage mbmaster \n
52@subpage mqtt \n
53@subpage netmgr \n
54@subpage oss \n
55@subpage ota \n
56@subpage posix \n
57@subpage py_engine \n
58@subpage ramfs \n
59@subpage SDL2 \n
60@subpage select \n
61@subpage sensor \n
62@subpage sntp \n
63@subpage trace \n
64@subpage uagent \n
65@subpage ucamera \n
66@subpage ucloud_ai \n
67@subpage udisplay \n
68@subpage ugraphics \n
69@subpage ulog \n
70@subpage uvoice \n
71@subpage uservice \n
72@subpage vfs \n