【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
相关推荐
问道飞鱼22 分钟前
【移动端知识】移动端多 WebView 互访方案:Android、iOS 与鸿蒙实现
android·ios·harmonyos·多webview互访
周胡杰2 小时前
鸿蒙加载预置数据库-关系型数据库-如何读取本地/预制数据库
数据库·华为·harmonyos·鸿蒙
脑子缺根弦3 小时前
融合优势:SIP 广播对讲联动华为会议 全场景沟通响应提速
华为·音视频·广播对讲系统
iFulling11 小时前
【计算机网络】第四章:网络层(上)
学习·计算机网络
香蕉可乐荷包蛋12 小时前
AI算法之图像识别与分类
人工智能·学习·算法
迷曳12 小时前
27、鸿蒙Harmony Next开发:ArkTS并发(Promise和async/await和多线程并发TaskPool和Worker的使用)
前端·华为·多线程·harmonyos
xiaoli232712 小时前
课题学习笔记1——文本问答与信息抽取关键技术研究论文阅读(用于无结构化文本问答的文本生成技术)
笔记·学习
人生游戏牛马NPC1号12 小时前
学习 Flutter (四):玩安卓项目实战 - 中
android·学习·flutter
LGGGGGQ13 小时前
嵌入式学习-PyTorch(7)-day23
人工智能·pytorch·学习
stm 学习ing13 小时前
Python暑期学习笔记3
笔记·python·学习