鸿蒙OpenHarmony【小型系统编写“Hello World”程序】 (基于Hi3516开发板)

news/2024/5/4 8:17:17

 编写“Hello World”程序

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

前提条件

已参考[创建工程并获取源码],创建Hi3516开发板的源码工程。 鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

搜狗高速浏览器截图20240326151547.png

示例目录

示例完整目录如下: HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿

applications/sample/hello
│── BUILD.gn
└── src└── helloworld.c

开发步骤

请在源码目录中通过以下步骤创建“Hello World”应用程序。

  1. 新建目录及源码。

    新建applications/sample/hello/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改OHOS为World)。当前应用程序可支持标准C及C++的代码开发。

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

  2. 新建编译组织文件。

    新建applications/sample/hello/BUILD.gn文件,内容如下所示:

    import("//build/lite/config/component/lite_component.gni")
    lite_component("hello-OHOS") {features = [ ":helloworld" ]
    }
    executable("helloworld") {output_name = "helloworld"sources = [ "src/helloworld.c" ]
    }

  3. 添加新组件。

    修改文件build/lite/components/applications.json,添加组件hello_world_app的配置,如下所示为applications.json文件片段,"##start##"和"##end##"之间为新增配置("##start##"和"##end##"仅用来标识位置,添加完配置后删除这两行):

    icon-note.gif

     说明:  本章节操作是以OpenHarmony-v3.1-Release版本为例进行操作的,该版本中,组件配置文件为build/lite/components/applications.json;若源码版本大于等于OpenHarmony 3.2 Beta2时,组件配置文件为build/lite/components/communication.json。

    {"components": [{"component": "camera_sample_communication","description": "Communication related samples.","optional": "true","dirs": ["applications/sample/camera/communication"],"targets": ["//applications/sample/camera/communication:sample"],"rom": "","ram": "","output": [],"adapted_kernel": [ "liteos_a" ],"features": [],"deps": {"components": [],"third_party": []}},
    ##start##{"component": "hello_world_app","description": "hello world samples.","optional": "true","dirs": ["applications/sample/hello"],"targets": ["//applications/sample/hello:hello-OHOS"],"rom": "","ram": "","output": [],"adapted_kernel": [ "liteos_a" ],"features": [],"deps": {"components": [],"third_party": []}},
    ##end##{"component": "camera_sample_app","description": "Camera related samples.","optional": "true","dirs": ["applications/sample/camera/launcher","applications/sample/camera/cameraApp","applications/sample/camera/setting","applications/sample/camera/gallery","applications/sample/camera/media"],

  4. 修改单板配置文件。

    修改文件vendor/hisilicon/hispark_taurus/config.json,新增hello_world_app组件的条目,如下所示代码片段为applications子系统配置,"##start##"和"##end##"之间为新增条目("##start##"和"##end##"仅用来标识位置,添加完配置后删除这两行):

          {"subsystem": "applications","components": [{ "component": "camera_sample_app", "features":[] },{ "component": "camera_sample_ai", "features":[] },
    ##start##{ "component": "hello_world_app", "features":[] },
    ##end##{ "component": "camera_screensaver_app", "features":[] }]},

我们程序员都知道学习开发技术,最先是从语言学起,鸿蒙语言有TS、ArkTS等语法,那么除了这些基础知识之外,其核心技术点有那些呢?下面就用一张整理出的鸿蒙学习路线图表示:

从上面的OpenHarmony技术梳理来看,鸿蒙的学习内容也是很多的。现在全网的鸿蒙学习文档也是非常的少,下面推荐一些:完整内容可在头像页保存,或这qr23.cn/AKFP8k甲助力

内容包含:《鸿蒙NEXT星河版开发学习文档》

  • ArkTS
  • 声明式ArkUI
  • 多媒体
  • 通信问题
  • 系统移植
  • 系统裁剪
  • FW层的原理
  • 各种开发调试工具
  • 智能设备开发
  • 分布式开发等等。

这些就是对往后开发者的分享,希望大家多多点赞关注喔!


http://www.mrgr.cn/p/81402334

相关文章

如何处理Keil uVision5注释无法输入汉字且输入汉字变成问号的问题

好久没用KEIL&#xff0c;今天在注释中出现无法输入汉字的情况&#xff0c;且输入或粘贴的汉字都变成了问号&#xff0c;解决方法很简单&#xff0c;将General Editor Settings: Encoding:设置为Chinese GB2312(Simplified)即可&#xff08;出现问号的当前设置是Encode in ANSI…

海外云手机怎么解决tiktok运营难题?

最近打算做TikTok的商家越来越多了&#xff0c;而做TikTok的第一步就面临如何养号、涨粉的困境&#xff0c;本文将介绍如何通过海外云手机轻松解决这些问题。 早期大家用的比较多的&#xff0c;是真机科学上网的方法。但是这种方法&#xff0c;需要自己搭建海外环境&#xff0c…

day04 51单片机-矩阵按键

1 矩阵按键 1.1 需求描述 本案例实现以下功能&#xff1a;按下矩阵按键SW5到SW20&#xff0c;数码管会显示对应的按键编号。 1.2 硬件设计 1.2.1 硬件原理图 1.2.2 矩阵按键原理 1.3软件设计 1&#xff09;Int_MatrixKeyboard.h 在项目的Int目录下创建Int_MatrixKeyboard…

【创建型模式】单例模式

一、单例模式概述 单例模式的定义&#xff1a;又叫单件模式&#xff0c;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。&#xff08;对象创建型&#xff09; 要点&#xff1a; 1.某个类只能有一个实例&#xff1b;2.必须自行创建这个实例&#xff1b;3.必须自行向整…

探索RadSystems:低代码开发的新选择(二)

系列文章目录 探索RadSystems&#xff1a;低代码开发的新选择&#xff08;一&#xff09;&#x1f6aa; 文章目录 系列文章目录前言一、RadSystems Studio是什么&#xff1f;二、用户认证三、系统角色许可四、用户记录管理五、时间戳记录总结 前言 在数字化时代&#xff0c;低…

HarmonyOs开发:导航tabs组件封装与使用

前言 主页的底部导航以及页面顶部的切换导航&#xff0c;无论哪个系统&#xff0c;哪个App&#xff0c;都是最常见的功能之一&#xff0c;虽然说在鸿蒙中有现成的组件tabs可以很快速的实现&#xff0c;但是在使用的时候&#xff0c;依然有几个潜在的问题存在&#xff0c;第一&a…

CountDownLatch倒计时器源码解读与使用

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1. 前言 2. CountDownLatch有什么用 3. CountDownLatch底层原理 3.1. count…

不如你把我杀了吧 | 绘制自定义的 3D 地图

如何根据自己的json数据绘制类似这种地图,仅供参考 1、准备数据。 因为自定义,所以全部的数据都来源自己。我们需要准备地图数据(包括但不限于地图轮廓数据,点数据) 这里我的数据使用的是arcgis导出json数据,因此数据格式足够规范,这省去了很多的麻烦。 2、导入相关库、…

【智能算法】寄生捕食算法(PPA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年&#xff0c;AAA Mohamed等人受到自然界乌鸦-布谷鸟-猫寄生系统启发&#xff0c;提出了寄生捕食算法&#xff08;Parasitism – Predation Algorithm, PPA&#xff09;。 2.算法原理 2.1算法…

面向对象设计与分析40讲(25)中介模式、代理模式、门面模式、桥接模式、适配器模式

文章目录 门面模式代理模式中介模式 之所以把这几个模式放到一起写&#xff0c;是因为它们的界限比较模糊&#xff0c;结构上没有明显的差别&#xff0c;差别只是语义上。 这几种模式在结构上都类似&#xff1a; 代理将原本A–>C的直接调用变成&#xff1a; A–>B–>…

针对窗口数量多导致窗口大小显示受限制的问题,使用滚动条控制窗口

建议&#xff1a;首先观察结果展示&#xff0c;判断是否可以满足你的需求。 目录 1. 问题分析 2. 解决方案 2.1 界面设计 2.2 生成代码 2.3 源码实现 3. 结果展示 1. 问题分析 项目需要显示的窗口数量颇多&#xff0c;主界面中&#xff0c;如果一次性显示全部窗口&#x…

30 消息队列

原理 操作系统可以通过页表映射在共享区创建一块共享内存&#xff0c;也可以申请一个队列。A进程和B进程可以向这个队列发送数据块&#xff0c;两个进程接收数据块来通信 函数 申请数据块 参数中的key来自于ftok函数 删除消息队列 同样消息队列也有数据结构管理&#xff…

service类型及功能简介+pod类型

功能定义及简介: 定义:K8s 中的Service是一种抽象,用于定义一组Pod的逻辑集合,并为它们提供统一的网络入口。Service充当了Pod的负载平衡器和服务发现器,为应用程序提供了稳定的网络地址,使得应用程序可以访问与之关联的Pod而无需了解其具体的IP地址或端口。 功能:Servi…

记一次自己的蠢币操作

今天在Hyper-V上安装了一个Ubuntu 22.04的虚拟机,折腾了老半天安装完以后随便搜了一篇换apt源的博客,点击查看镜像源(Ubuntu 20.04) #添加清华源 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb-src https://mirrors.tuna…

Dubbo应用可观测性升级指南与踩坑记录

应用从dubbo-3.1.*升级到dubbo-*:3.2.*最新稳定版本&#xff0c;提升应用的可观测性和度量数据准确性。 1. dubbo版本发布说明(可不关注) dubbo版本发布 https://github.com/apache/dubbo/releases 【升级兼容性】3.1 升级到 3.2 2. 应用修改点 应用一般只需要升级dubbo-s…

微信小程序酒店选择日期和入住人数(有效果图)

效果图 app.vue onLaunch:function(options){this.defaultcache()}defaultcache(){// 入住信息缓存var arr this.getDateTime();var ReserVation {reservType:0,//1 人数 2日期InCheckin:{},//入离日期peopleArr:[{title:成人,num:2},{title:儿童,num:0},{title:宝子,num:1…

JavaScript 函数

函数这里有函数定义和函数调用&#xff0c;函数名称加上小括号这才叫函数调用。 可以先定义使用函数&#xff0c;再去调用函数&#xff0c;因为在真实执行的时候&#xff0c;它会将函数提升到顶部。 return后面不能再去加任何代码&#xff0c;只要return了后面

ChatGPT实用指南2024

随着ChatGPT技术的演进&#xff0c;越来越多的人开始在工作中利用此工具。以下是关于ChatGPT的实用指南&#xff0c;适合不太熟悉此技术的朋友参考。 一、ChatGPT概述 1. ChatGPT是什么&#xff1f; ChatGPT是基于OpenAI开发的GPT大型语言模型的智能对话工具。它能够通过自然语…

使用JXLS+Excel模板制作灵活的excel导出

前期一直卡在模板的批注上&#xff0c;改了很多遍的模板批注最终才成功导入&#xff0c;记录下方便以后寻找。 话不多说直接上代码&#xff1a; Report package com.example.jxls.common;import java.io.IOException; import java.io.InputStream; import java.io.OutputStr…

自己动手搞IPTV组播源-直播源

例如得到某地的组播地址,http://27.191.170.26:7000/rtp/239.254.200.45:8008,其中http://27.191.170.26:7000是我们要找的前缀IP,/rtp/239.254.200.45:8008是组播3.打开ip138.com,查找27.191.170.26的归属地,得知是河北唐山电信4.打开https://fofa.info/,输入语法:udpx…