• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 公共基础库开发指导<a name="ZH-CN_TOPIC_0000001059307279"></a>
2
3-   [接口说明](#section1633115419401)
4-   [开发步骤](#section17450172710292)
5    -   [LiteOS-A内核\(Hi3516、Hi3518平台\)KV存储的native应用开发步骤:](#section258354119295)
6    -   [Dump系统属性在LiteOS-M内核平台使用指南:](#section9179161863014)
7    -   [Dump系统属性在LiteOS-A内核平台使用指南:](#section3179121853017)
8
9
10## 接口说明<a name="section1633115419401"></a>
11
12**表 1**  文件操作接口说明
13
14<a name="table1171894475019"></a>
15<table><thead align="left"><tr id="row1471814441508"><th class="cellrowborder" valign="top" width="45.65%" id="mcps1.2.3.1.1"><p id="p11718174425016"><a name="p11718174425016"></a><a name="p11718174425016"></a>接口名</p>
16</th>
17<th class="cellrowborder" valign="top" width="54.35%" id="mcps1.2.3.1.2"><p id="p6718124475013"><a name="p6718124475013"></a><a name="p6718124475013"></a>描述</p>
18</th>
19</tr>
20</thead>
21<tbody><tr id="row671818445506"><td class="cellrowborder" valign="top" width="45.65%" headers="mcps1.2.3.1.1 "><p id="p871814441501"><a name="p871814441501"></a><a name="p871814441501"></a>int UtilsFileOpen(const char* path, int oflag, int mode)</p>
22</td>
23<td class="cellrowborder" valign="top" width="54.35%" headers="mcps1.2.3.1.2 "><p id="p127181444165016"><a name="p127181444165016"></a><a name="p127181444165016"></a>打开或创建文件</p>
24</td>
25</tr>
26<tr id="row1171874420507"><td class="cellrowborder" valign="top" width="45.65%" headers="mcps1.2.3.1.1 "><p id="p1671884419509"><a name="p1671884419509"></a><a name="p1671884419509"></a>int UtilsFileClose(int fd)</p>
27</td>
28<td class="cellrowborder" valign="top" width="54.35%" headers="mcps1.2.3.1.2 "><p id="p1071884416504"><a name="p1071884416504"></a><a name="p1071884416504"></a>关闭文件</p>
29</td>
30</tr>
31<tr id="row6718744105017"><td class="cellrowborder" valign="top" width="45.65%" headers="mcps1.2.3.1.1 "><p id="p137181644145015"><a name="p137181644145015"></a><a name="p137181644145015"></a>int UtilsFileRead(int fd, char *buf, unsigned int len)</p>
32</td>
33<td class="cellrowborder" valign="top" width="54.35%" headers="mcps1.2.3.1.2 "><p id="p1171854410509"><a name="p1171854410509"></a><a name="p1171854410509"></a>读取特定长度的文件数据</p>
34</td>
35</tr>
36<tr id="row2071817440509"><td class="cellrowborder" valign="top" width="45.65%" headers="mcps1.2.3.1.1 "><p id="p17718144465012"><a name="p17718144465012"></a><a name="p17718144465012"></a>int UtilsFileWrite(int fd, const char *buf, unsigned int len)</p>
37</td>
38<td class="cellrowborder" valign="top" width="54.35%" headers="mcps1.2.3.1.2 "><p id="p67191444145012"><a name="p67191444145012"></a><a name="p67191444145012"></a>向文件写入特定大小的数据</p>
39</td>
40</tr>
41<tr id="row471974425019"><td class="cellrowborder" valign="top" width="45.65%" headers="mcps1.2.3.1.1 "><p id="p11719174475016"><a name="p11719174475016"></a><a name="p11719174475016"></a>int UtilsFileDelete(const char *path)</p>
42</td>
43<td class="cellrowborder" valign="top" width="54.35%" headers="mcps1.2.3.1.2 "><p id="p2071919446507"><a name="p2071919446507"></a><a name="p2071919446507"></a>删除指定文件</p>
44</td>
45</tr>
46<tr id="row1071964425013"><td class="cellrowborder" valign="top" width="45.65%" headers="mcps1.2.3.1.1 "><p id="p20719114405010"><a name="p20719114405010"></a><a name="p20719114405010"></a>int UtilsFileStat(const char *path, unsigned int *fileSize)</p>
47</td>
48<td class="cellrowborder" valign="top" width="54.35%" headers="mcps1.2.3.1.2 "><p id="p8719144435015"><a name="p8719144435015"></a><a name="p8719144435015"></a>获取文件大小</p>
49</td>
50</tr>
51<tr id="row2071924417504"><td class="cellrowborder" valign="top" width="45.65%" headers="mcps1.2.3.1.1 "><p id="p57193447501"><a name="p57193447501"></a><a name="p57193447501"></a>int UtilsFileSeek(int fd, int offset, unsigned int whence)</p>
52</td>
53<td class="cellrowborder" valign="top" width="54.35%" headers="mcps1.2.3.1.2 "><p id="p1071934495014"><a name="p1071934495014"></a><a name="p1071934495014"></a>重新定位文件读/写偏移量</p>
54</td>
55</tr>
56<tr id="row1135017417557"><td class="cellrowborder" valign="top" width="45.65%" headers="mcps1.2.3.1.1 "><p id="p2350184112554"><a name="p2350184112554"></a><a name="p2350184112554"></a>int UtilsFileCopy(const char* src, const char* dest)</p>
57</td>
58<td class="cellrowborder" valign="top" width="54.35%" headers="mcps1.2.3.1.2 "><p id="p113501041155511"><a name="p113501041155511"></a><a name="p113501041155511"></a>将源文件复制一份并存储到目标文件</p>
59</td>
60</tr>
61<tr id="row11216645145517"><td class="cellrowborder" valign="top" width="45.65%" headers="mcps1.2.3.1.1 "><p id="p192171345105519"><a name="p192171345105519"></a><a name="p192171345105519"></a>int UtilsFileMove(const char* src, const char* dest)</p>
62</td>
63<td class="cellrowborder" valign="top" width="54.35%" headers="mcps1.2.3.1.2 "><p id="p921744595517"><a name="p921744595517"></a><a name="p921744595517"></a>将源文件移动到指定目标文件</p>
64</td>
65</tr>
66</tbody>
67</table>
68
69文件操作使用示例:
70
71```
72// open && write
73char fileName[] = "testfile";
74static const char def[] = "utils_file_operation implement.";
75int fd = UtilsFileOpen(fileName, O_RDWR_FS | O_CREAT_FS | O_TRUNC_FS, 0);
76printf("file handle = %d\n", fd);
77int ret = UtilsFileWrite(fd, def, strlen(def));
78printf("write ret = %d\n", ret);
79
80// seek
81ret = UtilsFileSeek(fd, 5, SEEK_SET_FS);
82printf("lseek ret = %d\n", ret);
83
84// read && close
85char buf[64] = {0};
86int readLen = UtilsFileRead(fd, buf, 64);
87ret = UtilsFileClose(fd);
88printf("read len = %d : buf = %s\n", readLen, buf);
89
90// stat
91int fileLen = 0;
92ret = UtilsFileStat(fileName, &fileLen);
93printf("file size = %d\n", fileLen);
94
95// delete
96ret = UtilsFileDelete(fileName);
97printf("delete ret = %d\n", ret);
98```
99
100**表 2**  KV存储接口说明
101
102<a name="table1731550155318"></a>
103<table><thead align="left"><tr id="row4419501537"><th class="cellrowborder" valign="top" width="57.38999999999999%" id="mcps1.2.3.1.1"><p id="p54150165315"><a name="p54150165315"></a><a name="p54150165315"></a>接口名</p>
104</th>
105<th class="cellrowborder" valign="top" width="42.61%" id="mcps1.2.3.1.2"><p id="p941150145313"><a name="p941150145313"></a><a name="p941150145313"></a>描述</p>
106</th>
107</tr>
108</thead>
109<tbody><tr id="row34145016535"><td class="cellrowborder" valign="top" width="57.38999999999999%" headers="mcps1.2.3.1.1 "><p id="p980953910190"><a name="p980953910190"></a><a name="p980953910190"></a>int UtilsGetValue(const char* key, char* value, unsigned int len)</p>
110</td>
111<td class="cellrowborder" valign="top" width="42.61%" headers="mcps1.2.3.1.2 "><p id="p13562171015712"><a name="p13562171015712"></a><a name="p13562171015712"></a>提供给上层应用根据key获取对应数据项</p>
112</td>
113</tr>
114<tr id="row1746172917474"><td class="cellrowborder" valign="top" width="57.38999999999999%" headers="mcps1.2.3.1.1 "><p id="p242913617818"><a name="p242913617818"></a><a name="p242913617818"></a>int UtilsSetValue(const char* key, const char* value)</p>
115</td>
116<td class="cellrowborder" valign="top" width="42.61%" headers="mcps1.2.3.1.2 "><p id="p2431455765"><a name="p2431455765"></a><a name="p2431455765"></a>提供给上层应用用于存储/更新key对应数据项</p>
117</td>
118</tr>
119<tr id="row10992232154714"><td class="cellrowborder" valign="top" width="57.38999999999999%" headers="mcps1.2.3.1.1 "><p id="p118151439111910"><a name="p118151439111910"></a><a name="p118151439111910"></a>int UtilsDeleteValue(const char* key)</p>
120</td>
121<td class="cellrowborder" valign="top" width="42.61%" headers="mcps1.2.3.1.2 "><p id="p126575774517"><a name="p126575774517"></a><a name="p126575774517"></a>提供给上层应用删除key对应数据项</p>
122</td>
123</tr>
124</tbody>
125</table>
126
127KV存储使用示例:
128
129```
130// set
131char key[] = "rw.sys.version_100";
132char value[] = "Hello kv operation implement!";
133int ret = UtilsSetValue(key, value);
134printf("UtilsSetValue set ret = %d\n", ret);
135
136// get
137char temp[128] = {0};
138ret = UtilsGetValue(key, temp, 128);
139printf("UtilsGetValue get ret = %d, temp = %s\n", ret, temp);
140
141// delete
142ret = UtilsDeleteValue(key);
143printf("UtilsDeleteValue delete ret = %d\n", ret);
144```
145
146<a name="table15992315220"></a>
147<table><thead align="left"></thead>
148<tbody></tbody>
149</table>
150
151## 开发步骤<a name="section17450172710292"></a>
152
153### LiteOS-A内核\(Hi3516、Hi3518平台\)KV存储的native应用开发步骤:<a name="section258354119295"></a>
154
1551.  基于AbilityKit开发KV存储的native应用。
156    -   基于KV存储提供的接口编写用户程序,并编译出so(libLauncher.so)文件。
157
158        ```
159        // set
160        char key[] = "rw.sys.version_100";
161        char value[] = "Hello kv operation implement!";
162        int ret = UtilsSetValue(key, value);
163        printf("UtilsSetValue set ret = %d\n", ret);
164
165        // get
166        char temp[128] = {0};
167        ret = UtilsGetValue(key, temp, 128);
168        printf("UtilsGetValue get ret = %d, temp = %s\n", ret, temp);
169
170        // delete
171        ret = UtilsDeleteValue(key);
172        printf("UtilsDeleteValue delete ret = %d\n", ret);
173        ```
174
175    -   编写config.json文件,内容如下:
176
177        ```
178        {
179            "app": {
180                "bundleName": "com.example.launcher",
181                "vendor": "example",
182                "version": {
183                    "code": 1,
184                    "name": "1.0"
185                }
186            },
187            "deviceConfig": {
188                "default": {
189                    "reqSdk": {
190                        "compatible": "zsdk 1.0.0",
191                        "target": "zsdk 1.0.1"
192                    },
193                    "keepAlive": false
194                },
195                "smartCamera": {
196                    "reqSdk": {
197                        "compatible": "zsdk 1.0.0",
198                        "target": "zsdk 1.0.1"
199                    },
200                    "keepAlive": false
201                }
202            },
203            "module": {
204                "package": "com.example.launcher",
205                "name": ".MyHarmonyAbilityPackage",
206                "deviceType": [
207                    "phone", "tv","tablet", "pc","car","smartWatch","sportsWatch","smartCamera"
208                ],
209                "distro": {
210                    "deliveryWithInstall": true,
211                    "moduleName": "Launcher",
212                    "moduleType": "entry"
213                },
214                "abilities": [{
215                    "name": "MainAbility",
216                    "icon": "res/drawable/phone.png",
217                    "label": "test app 1",
218                    "launchType": "standard",
219                    "type": "page"
220                },
221                {
222                    "name": "SecondAbility",
223                    "icon": "res/drawable/phone.png",
224                    "label": "test app 2",
225                    "launchType": "standard",
226                    "type": "page"
227                },
228                {
229                    "name": "ServiceAbility",
230                    "icon": "res/drawable/phone.png",
231                    "label": "test app 2",
232                    "launchType": "standard",
233                    "type": "service"
234                }
235                ]
236            }
237        }
238        ```
239
240    -   生成hap包。
241
242        -   按照如下目录结构存放文件,res/drawable下面放置资源文件:
243
244        ![](figure/unnaming.png)
245
246        -   将上述文件打包生成zip包,修改后缀为.hap,例如Launcher.hap
247
2482.  连接单板,通过串口向单板发送安装KV存储native应用的命令。
249
250    ```
251    ./nfs/dev_tools/bin/bm install -p /nfs/Launcher.hap
252    ```
253
2543.  通过串口向单板发送运行KV存储native应用的命令。
255
256    ```
257    ./nfs/dev_tools/bin/aa start -p com.example.launcher -n ServiceAbility
258    ```
259
260
261### Dump系统属性在LiteOS-M内核平台使用指南:<a name="section9179161863014"></a>
262
2631.  连接单板,通过串口向单板发送AT+SYSPARA命令。
264
265    ```
266    AT+SYSPARA
267    ```
268
269    **图 1**  LiteOS-M平台dump系统属性输出<a name="fig15179161863016"></a>
270    ![](figure/LiteOS-M平台dump系统属性输出.png "LiteOS-M平台dump系统属性输出")
271
272
273### Dump系统属性在LiteOS-A内核平台使用指南:<a name="section3179121853017"></a>
274
2751.  连接单板,运行bin路径下的os\_dump加参数--help,查看os\_dump使用指导。
276
277    ```
278    ./bin/os_dump --help
279    ```
280
2812.  os\_dump加参数-l,查看当前系统有哪些模块支持获取属性。
282
283    ```
284    ./bin/os_dump -l
285    ```
286
2873.  os\_dump加参数syspara,查看当前系统属性
288
289    ```
290    ./bin/os_dump syspara
291    ```
292
293    **图 2**  LiteOS-A平台dump系统属性输出<a name="fig2179718143018"></a>
294    ![](figure/LiteOS-A平台dump系统属性输出.png "LiteOS-A平台dump系统属性输出")
295
296
297