飞道的博客

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

404人阅读  评论(0)

前言

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

环境准备

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

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. int main( int argc, char **argv)
  4. {
  5. printf( "\n************************************************\n");
  6. printf( "\n\t\tHello bluishfish!\n");
  7. printf( "\n************************************************\n\n");
  8. LOS_Sample(g_num);
  9. return 0;
  10. }

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

3. 创建子程序

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


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

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


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

4. 配置BUILD.gn文件

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


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

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

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

5. 修改 json 配置

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


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

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

6. 编译

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

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命令行

./bin/camera_my_app

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

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

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

资料下载

本期相关文件资料,可在公众号“深度觉醒”,后台回复:“ohos04”,获取下载链接。

下一篇

我们将开发一个有界面的HAP应用,

并介绍一下更多的组件功能,

敬请期待...

往期推荐


转载:https://blog.csdn.net/weixin_47479625/article/details/111659548
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场