quickstart-standard-running-rk3568-create.md 4.2 KB
Newer Older
D
duangavin123 已提交
1 2 3 4
# 创建应用程序<a name="ZH-CN_TOPIC_0000001234205905"></a>

下方将通过修改源码的方式展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。

Y
yudechen 已提交
5
这里演示新建examples子系统,添加hello部件以及该部件下的helloworld模块。
D
duangavin123 已提交
6 7 8 9 10 11

示例完整目录如下。

```
applications/standard/hello
├── helloworld
12
│   ├── BUILD.gn
D
duangavin123 已提交
13 14 15 16 17
│   ├── include
│   │   └── helloworld.h
│   └── src
│       └── helloworld.c
├── ohos.build
Y
yudechen 已提交
18 19
build
├── subsystem_config.json
D
duangavin123 已提交
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
productdefine/common
└── products
    └── rk3568.json
```

下方为新建应用程序步骤,请在[获取源码](quickstart-standard-sourcecode-acquire.md)章节下载的源码目录中进行下述操作:

1.  新建目录及源码。

    新建applications/standard/hello/helloworld/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OHOS)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。

    ```
    #include <stdio.h>
    #include "helloworld.h"
    
    int main(int argc, char **argv)
    {
        HelloPrint();
        return 0;
    }
    
    void HelloPrint()
    {
        printf("\n************************************************\n");
        printf("\n\t\tHello World!\n");
        printf("\n************************************************\n");
    }
    ```

    再添加头文件applications/standard/hello/helloworld/include/helloworld.h,代码如下所示。

    ```
    #ifndef HELLOWORLD_H
    #define HELLOWORLD_H
    #ifdef __cplusplus
    #if __cplusplus
    extern "C" {
    #endif
    #endif
    
    void HelloPrint();
    
    #ifdef __cplusplus
    #if __cplusplus
    }
    #endif
    #endif
    #endif // HELLOWORLD_H
    ```

2.  新建编译组织文件。
71
    1.  新建applications/standard/hello/helloworld/BUILD.gn文件,内容如下所示:
D
duangavin123 已提交
72 73 74 75 76

        ```
        import("//build/ohos.gni")  # 导入编译模板
        ohos_executable("helloworld") { # 可执行模块
          sources = [       # 模块源码
Y
yudechen 已提交
77
            "src/helloworld.c"
D
duangavin123 已提交
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
          ]
          include_dirs = [  # 模块依赖头文件目录
            "include" 
          ]
          cflags = []
          cflags_c = []
          cflags_cc = []
          ldflags = []
          configs = []
          deps =[]    # 部件内部依赖
        
          part_name = "hello"    # 所属部件名称,必选
          install_enable = true  # 是否默认安装(缺省默认不安装),可选
        }
        ```

    2.  新建applications/standard/hello/ohos.build文件,添加hello部件描述,内容如下所示。

        ```
        {
Y
yudechen 已提交
98 99 100 101 102
          "subsystem": "examples",
          "parts": {
            "hello": {
              "version": "1.0.0",
              "variants": [
D
duangavin123 已提交
103 104 105
                "wearable",
                "phone"
              ],
Y
yudechen 已提交
106 107
              "module_list": [
                "//applications/standard/hello:helloworld"
D
duangavin123 已提交
108
              ],
Y
yudechen 已提交
109 110
               "inner_kits": [],
               "test_list": []
D
duangavin123 已提交
111 112 113 114 115 116 117
            }
          }
        }
        ```

        ohos.build文件包含两个部分,第一部分subsystem说明该子系统的名称,parts定义该子系统包含的部件,要添加一个部件,需要把该部件对应的内容添加进parts中去。添加的时候需要指明该部件包含的模块module\_list,假如有提供给其它部件的接口,需要在inner\_kits中说明,假如有测试用例,需要在test\_list中说明,inner\_kits与test\_list没有也可以不添加。

Y
yudechen 已提交
118 119 120 121 122 123 124 125 126 127 128
3.  修改子系统配置文件。

    在build/subsystem_config.json中添加examples子系统配置。
    ```
    "examples": {
      "path": "applications/standard/hello",
      "name": "examples"
    },
    ```

4.  修改产品配置文件。
D
duangavin123 已提交
129

Y
yudechen 已提交
130
    在productdefine/common/products/rk3568.json中添加对应的hello部件,直接添加到原有部件后即可。
D
duangavin123 已提交
131 132

    ```
Y
yudechen 已提交
133
        "usb:usb_manager_native":{},
D
duangavin123 已提交
134
        "applications:prebuilt_hap":{},
Y
yudechen 已提交
135
        "examples:hello":{},
D
duangavin123 已提交
136 137 138 139
        "wpa_supplicant-2.9:wpa_supplicant-2.9":{},
    ```