【PowerHarmony】电鸿蒙学习记录-编写helloworld!

入门

  • 一、编写HelloWorld
    • [1.1 编译SDK](#1.1 编译SDK)
    • [1.2 业务构建](#1.2 业务构建)
      • [1.2.1 编写HelloWorld业务代码](#1.2.1 编写HelloWorld业务代码)
      • [1.2.3 编辑业务构建文件](#1.2.3 编辑业务构建文件)
    • [1.3 添加新组件](#1.3 添加新组件)
    • [1.4 编辑组件条目](#1.4 编辑组件条目)
    • [1.5 编译验证](#1.5 编译验证)
    • [1.6 新增文件结构展示](#1.6 新增文件结构展示)

一、编写HelloWorld

1.1 编译SDK

可以在VSCode终端中编译SDK源码,确认编译通过后即可开始编写HelloWorld 。

1.2 业务构建

1.2.1 编写HelloWorld业务代码

业务代码一般新增于applications文件夹下

javascript 复制代码
// 工程结构目录一般如下
--applications
	--sample
		--wifi-iot
			--app
				--my_first_app
					--hello_world.c
					--BUILD.gn
javascript 复制代码
// hello_world.c
#include <stdio.h>
#include "ohos_init.h"
#include "ohos_types.h"

void HelloWorld(void){
    printf("[DEMO]HEllo World.\n");
}

SYS_RUN(HelloWorld);

1.2.3 编辑业务构建文件

该系统下业务系统由BUILD.gn文件完成配置,包括目标、源文件路径、头文件路径三部分。

javascript 复制代码
// BUILD.gn文件
static_library("myapp"){	//目标,编译结果为静态库文件libmyapp.a
    sources = [				//源文件及路径,指定静态库文件所依赖的c文件及路径,此处未加"//"为相对路径,加"//"为绝对路径。
        "hello_world.c",
    ]
    include_dirs = [		//头文件路径,指定静态库文件所依赖的h文件路径
        "//utils/native/lite/include",
    ]
}

1.3 添加新组件

电鸿下各类驱动可以作为一个组件,组件的添加同样需要配置json文件以新增组件,否则不会在组件条目中包含编译。

javascript 复制代码
/*	在build/lite/components/applications.json中新增该组件
	注意组件名称(component)、路径(dirs)、以及源文件及路径(targets)要正确
*/
{
    "components":[
        {
            "component":"hello_world_app",
            "description":"hello world samples.",
            "optional":"true",
            "dirs":[
                "applications/sample/wifi-iot/app/my_first_app"
            ],
            "targets":[
                "//applications/sample/wifi-iot/app/my_first_app:myapp"
            ],
            "rom":"",
            "ram":"",
            "output":[],
            "adapted_kernel":["liteos_m"],
            "features":[],
            "deps":{
                "components":[],
                "third_party":[]
            }
        }
    ]
}

1.4 编辑组件条目

组件条目修改后会自动按配置将编写的业务进行包含编译

javascript 复制代码
/*	在vender/hisilicon/hispark_pegasus/config.json中新增hello_world_app组件的条目
	需要注意归属到那个子系统(subsystem),组件名称(component)要正确。
*/
{
    "subsystem":"applications",
    "components":[
        {"component":"hello_world_app","features":[]}
    ]
}

1.5 编译验证

编译通过后,查看串口是否有打印输出

1.6 新增文件结构展示

javascript 复制代码
// An highlighted block
--applications/sample/wifi-iot/app
	--my_first_app			//新增文件夹
		--BUILD.gn			//新增 myapp静态库文件
		--hello_world.c		//新增 c文件
--build/lite/components
	--applications.json		//新增 配置component:hello_world_app的相关信息
--vender/hisilicon/hispark_pegasus
	--config.gn				//新增 在子系统applications中新增component:hello_world_app
相关推荐
libo_20253 分钟前
HarmonyOS5 灰度发布:通过AGC控制台分阶段更新Uniapp混合应用
harmonyos
libo_20254 分钟前
自动化测试:将Uniapp页面注入HarmonyOS5 UITest框架
harmonyos
libo_20254 分钟前
HarmonyOS5 Uniapp+OpenHarmony标准设备适配指南
harmonyos
libo_20255 分钟前
HarmonyOS5 内存优化:用DevEco Studio Profiler分析Uniapp混合栈泄漏
harmonyos
libo_20258 分钟前
AI能力整合:在Uniapp中调用HarmonyOS5 HiAI Kit的图像识别
harmonyos
libo_20258 分钟前
HarmonyOS5 Uniapp应用上架AppGallery全流程:从签名到过审避坑指南
harmonyos
凌辰揽月9 分钟前
Web后端基础(基础知识)
java·开发语言·前端·数据库·学习·算法
Tianyanxiao1 小时前
华为×小鹏战略合作:破局智能驾驶深水区的商业逻辑深度解析
大数据·人工智能·经验分享·华为·金融·数据分析
whoarethenext2 小时前
C++ OpenCV 学习路线图
c++·opencv·学习
恰薯条的屑海鸥2 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十四期-XXE模块)
网络·学习·安全·web安全·渗透测试