• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 编写“Hello World”程序
2
3
4下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。
5
6
7
8## 示例目录
9
10拉取openharmony项目代码,在代码根目录创建sample子系统文件夹,在子系统目录下创建hello部件文件夹,hello文件夹中创建hello源码目录,构建文件BUILD.gn及部件配置文件bundle.json11示例完整目录如下。
12
13
14```
15sample/hello
16│── BUILD.gn
17│── include
18│   └── helloworld.h
19│── src
20│   └── helloworld.c
21├── bundle.json
22build
23└── subsystem_config.json
24vendor/hihope
25└── rk3568
26    └── config.json
27```
28
29
30## 开发步骤
31
32请在源码目录中通过以下步骤创建“Hello World”应用程序。
33
341. 创建目录,编写业务代码。
35
36   新建sample/hello/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OHOS)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。
37
38
39   ```
40   #include <stdio.h>
41   #include "helloworld.h"
42
43   int main(int argc, char **argv)
44   {
45       HelloPrint();
46       return 0;
47   }
48
49   void HelloPrint()
50   {
51       printf("\n\n");
52       printf("\n\t\tHello World!\n");
53       printf("\n\n");
54   }
55   ```
56
57   再添加头文件sample/hello/include/helloworld.h,代码如下所示。
58
59
60   ```
61   #ifndef HELLOWORLD_H
62   #define HELLOWORLD_H
63   #ifdef __cplusplus
64   #if __cplusplus
65   extern "C" {
66   #endif
67   #endif
68
69   void HelloPrint();
70
71   #ifdef __cplusplus
72   #if __cplusplus
73   }
74   #endif
75   #endif
76   #endif // HELLOWORLD_H
77   ```
78
792. 新建编译组织文件。
80
81   新建sample/hello/BUILD.gn,创建方法可参考:[模块配置规则](../subsystems/subsys-build-module.md)。
82                                                                                                                                                创建
83   BUILD.gn内容如下所示:
84
85   ```
86   import("//build/ohos.gni")  # 导入编译模板
87   ohos_executable("helloworld") { # 可执行模块
88     sources = [       # 模块源码
89       "src/helloworld.c"
90     ]
91     include_dirs = [  # 模块依赖头文件目录
92       "include"
93     ]
94     cflags = []
95     cflags_c = []
96     cflags_cc = []
97     ldflags = []
98     configs = []
99     deps =[]    # 部件内部依赖
100     part_name = "hello"    # 所属部件名称,必选
101     install_enable = true  # 是否默认安装(缺省默认不安装),可选
102   }
103   ```
104
1053. 新建部件配置规则文件
106
107   新建sample/hello/bundle.json文件,添加sample部件描述,创建方法可参考:[部件配置规则](../subsystems/subsys-build-component.md)。
108
109   bundle.json内容如下所示。
110
111   ```
112   {
113       "name": "@ohos/hello",
114       "description": "Hello world example.",
115       "version": "3.1",
116       "license": "Apache License 2.0",
117       "publishAs": "code-segment",
118       "segment": {
119           "destPath": "sample/hello"
120       },
121       "dirs": {},
122       "scripts": {},
123       "component": {
124           "name": "hello",
125           "subsystem": "sample",
126           "syscap": [],
127           "features": [],
128           "adapted_system_type": [ "mini", "small", "standard" ],
129           "rom": "10KB",
130           "ram": "10KB",
131           "deps": {
132               "components": [],
133               "third_party": []
134           },
135           "build": {
136               "sub_component": [
137                   "//sample/hello:helloworld"
138               ],
139               "inner_kits": [],
140               "test": []
141           }
142       }
143   }
144   ```
145
146   bundle.json文件包含两个部分,第一部分描述该部件所属子系统的信息,第二部分component则定义该部件构建相关配置。添加的时候需要指明该部件包含的模块sub_component,假如有提供给其它部件的接口,需要在inner_kits中说明,假如有测试用例,需要在test中说明,inner_kits与test没有也可以不添加。
147
1484. 修改子系统配置文件。
149
150build/subsystem_config.json中添加新建的子系统的配置。修改方法可参考:[子系统配置规则](../subsystems/subsys-build-subsystem.md)。
151
152   新增子系统的配置如下所示。
153
154   ```
155   "sample": {
156       "path": "sample",
157       "name": "sample"
158     },
159   ```
160
1615. 修改产品配置文件。
162
163      > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
164      > OpenHarmony-v3.2-Beta2之前版本,RK3568的产品配置文件为productdefine/common/products/rk3568.json;从OpenHarmony-v3.2-Beta2版本开始,RK3568的产品配置文件为vendor/hihope/rk3568/config.json165
166   - 3.2-Beta2之前版本
167
168productdefine/common/products/rk3568.json中添加对应的hello部件,直接添加到原有部件后即可。
169
170       ```
171       "usb:usb_manager_native":{},
172       "applications:prebuilt_hap":{},
173       "sample:hello":{},
174       "wpa_supplicant-2.9:wpa_supplicant-2.9":{},
175       ```
176
177   - 3.2-Beta2及之后版本
178
179vendor/hihope/rk3568/config.json中添加对应的hello部件,直接添加到原有部件后即可。
180
181       ```
182       {
183         "subsystem": "sample",
184         "components": [
185           {
186             "component": "hello",
187             "features": []
188           }
189         ]
190       },
191       ```
192