用鸿蒙开发AI应用(四)Helloworld

开发
上一篇,我们把编译和烧录环境都搭建好了,这一篇我们来初探一下鸿蒙OS的应用开发流程。

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

前言

上一篇,我们把编译和烧录环境都搭建好了,这一篇我们来初探一下鸿蒙OS的应用开发流程。

[[376970]]

环境准备

距我们上次搭建环境有段时间了,先来更新一下开发工具和相关开源代码。

1. 更新 DevEco Device Tools

在 vscode 里 扩展 -> 从VSIX安装... -> 选择DevEcoDeviceTool-1.0.1.vsix


2. 同步代码仓

  1. cd ~/harmony/openharmony 
  2. repo sync -c 

 

3. 下载开发工具

  1. mkdir -p ~/developtools && cd ~/developtools 
  2. URL_PREFIX=https://repo.huaweicloud.com/harmonyos/develop_tools/ 
  3. wget $URL_PREFIX/hapsigntoolv2.jar 
  4. wget $URL_PREFIX/hmos_app_packing_tool.jar 

 下载应用打包和签名工具。

第一个程序

1. 创建程序目录

在源码 applications\sample 目录下,我们新建一个 myApp 目录放置新增代码。

2. 创建主程序

新建主程序 my_first_app.c,简单打印一个Hello World。

  1. #include <stdio.h> 
  2. #include "los_sample.h" 
  3.  
  4. int main(int argc, char **argv) 
  5.     printf("\n************************************************\n"); 
  6.     printf("\n\t\tHello bluishfish!\n"); 
  7.     printf("\n************************************************\n\n"); 
  8.  
  9.     LOS_Sample(g_num); 
  10.  
  11.     return 0; 

 stdio.h 为标准库,los_sample.h为子程序的头文件。

3. 创建子程序

创建子程序los_sample.c, 也是简单打印一下。

  1. #include <stdio.h> 
  2.  
  3. int g_num = 81; 
  4. void LOS_Sample(int param) 
  5.     printf("This is a sample: Param = %d\n", param); 

 ​在include目录下创建一个头文件los_sample.h

  1. #ifndef _LOS_SAMPLE_H 
  2. #define _LOS_SAMPLE_H 
  3.  
  4. #ifdef __cplusplus 
  5. extern "C" { 
  6. #endif /* __cplusplus */ 
  7.  
  8. extern int g_num; 
  9.  
  10. extern void LOS_Sample(int param); 
  11.  
  12. #ifdef __cplusplus 
  13. #endif /* __cplusplus */ 
  14.  
  15. #endif /* _LOS_SAMPLE_H */ 

 4. 配置BUILD.gn文件

创建BUILD.gn, 写入配置信息

  1. import("//build/lite/config/component/lite_component.gni"
  2.  
  3. static_library("my_app_lib") { 
  4.     sources = [ 
  5.         "my_first_app.c"
  6.         "los_sample.c" 
  7.     ] 
  8.  
  9.     include_dirs = [ 
  10.         "include"
  11.     ] 
  12.  
  13. lite_component("camera_my_app") { 
  14.     target_type = "executable" 
  15.  
  16.     features = [ 
  17.         ":my_app_lib"
  18.     ] 

 首先导入 gni 组件,将源码my_first_app.c和los_sample.c编译成my_app_lib库文件,这里指定include为头文件路径。

然后将my_app_lib打包成 lite_component命名为camera_my_app组件。

5. 修改 json 配置

在 build\lite\目录下 新建my_hi3516dv300.json

  1.   "ohos_version""OpenHarmony 1.0"
  2.   "board""hi3516dv300"
  3.   "kernel""liteos_a"
  4.   "compiler""clang"
  5.   "subsystem": [ 
  6.     { 
  7.       "name""applications"
  8.       "component": [ 
  9.         { "name""mycamera""dir""//applications/sample/camera/myApp:camera_my_app""features":[] } 
  10.       ] 
  11.     } 
  12.   ], 
  13.   "vendor_adapter_dir""//vendor/hisi/hi35xx/hi3516dv300/hi3516dv300_adapter"
  14.   "third_party_dir""//third_party"
  15.   "ohos_product_type":""
  16.   "ohos_manufacture":""
  17.   "ohos_brand":""
  18.   "ohos_market_name":""
  19.   "ohos_product_series":""
  20.   "ohos_product_model":""
  21.   "ohos_software_model":""
  22.   "ohos_hardware_model":""
  23.   "ohos_hardware_profile":""
  24.   "ohos_serial":""
  25.   "ohos_bootloader_version":""
  26.   "ohos_secure_patch_level":""
  27.   "ohos_abi_list":"" 

 将刚才生成的camera_my_app组件,打包为applications应用,放入鸿蒙的子系统中。

6. 编译

可以通过ssh登录虚拟机或直接在虚拟机上进行编译,


  1. python build.py my_hi3516dv300 -b debug 

注意:一定要带上 debug参数,这样才能启动后才能方便进入OHOS的命令行模式。

如遇到找不到java路径的情况,是由于新开源代码中加入了应用打包工具引起的,前文已下好工具包。


再安装 java即可修复。

  1. sudo apt install openjdk-11-jre-headless 
  2. java -version 

 7. 烧录系统

在上一篇完成过烧录后,这里只需要选择userfs.img文件烧录即可。


注意这里的输出目录为my_hi3516dv300


点击烧录,然后重启开发板即可。

8. 运行

烧录完成后,我们在串口下进行调试,根据usb分配的串口号进行连接


在开发板启动完成后,按回车进入OHOS命令行

  1. ./bin/camera_my_app 

这里camera_my_app就是我们之前定义的组件名称,能正常看到输出,那恭喜您已经在鸿蒙上运行了第一个程序了。


注意这里的命名对应关系,官方示例中采用源文件、库文件、组件名称和应用名称都采用相同命名,会便于项目管理。不过对新人来说不容易理解,这里我都区分开了,可以再仔细梳理一下流程。

从源码到库,从库到组件,再从组件到应用,最后进入OHOS系统执行。

资料下载


下一篇预告

下一篇,我们将开发一个有界面的HAP应用,并介绍一下更多的组件功能,敬请期待...


©著作权归作者和HarmonyOS技术社区共同所有,如需转载,请注明出处,否则将追究法律责任

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2020-11-10 11:58:17

鸿蒙应用开发

2021-01-14 12:06:22

鸿蒙HarmonyOSAI应用

2021-01-25 09:58:01

鸿蒙HarmonyOS应用开发

2021-01-15 09:50:06

鸿蒙HarmonyOSAI应用

2021-01-15 11:36:16

鸿蒙HarmonyOSAI应用

2021-02-06 10:40:45

鸿蒙HarmonyOS应用开发

2021-01-21 13:27:37

鸿蒙HarmonyOS应用开发

2022-02-15 14:06:36

OpenHarmon操作系统鸿蒙

2020-12-18 10:42:14

鸿蒙开发应用

2020-11-09 11:56:49

HarmonyOS

2020-09-28 15:13:04

鸿蒙

2018-09-20 08:53:56

AI平台工具

2022-09-09 14:42:17

应用开发ETS

2019-05-05 11:02:07

vscodevue前端

2022-02-24 16:39:41

OpenHarmonNiobe开发鸿蒙

2021-06-24 09:32:00

鸿蒙HarmonyOS应用

2012-02-13 13:45:04

MonoTouch.NETiOS应用

2021-02-07 12:08:39

鸿蒙HarmonyOS应用开发

2009-03-16 15:00:16

阿里软件旺旺软件平台SaaS

2022-08-19 14:14:13

人工智能人脸识别安全
点赞
收藏

51CTO技术栈公众号