用鴻蒙開發AI應用(四)Helloworld

bluishfish 2022-01-07 12:11:42 阅读数:996

ai helloworld

前言

上一篇,我們把編譯和燒錄環境都搭建好了,這一篇我們來初探一下鴻蒙OS的應用開發流程。

環境准備

距我們上次搭建環境有段時間了,先來更新一下開發工具和相關開源代碼。

1. 更新 DevEco Device Tools

vscode擴展 -> 從VSIX安裝... -> 選擇DevEcoDeviceTool-1.0.1.vsix

2. 同步代碼倉

cd ~/harmony/openharmony
repo sync -c

3. 下載開發工具

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

下載應用打包和簽名工具。

第一個程序

1. 創建程序目錄

在源碼 applications\sample 目錄下,我們新建一個 myApp 目錄放置新增代碼。

2. 創建主程序

新建主程序 my_first_app.c,簡單打印一個Hello World

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

stdio.h 為標准庫,los_sample.h為子程序的頭文件。

3. 創建子程序

創建子程序los_sample.c, 也是簡單打印一下。

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

include目錄下創建一個頭文件los_sample.h

#ifndef _LOS_SAMPLE_H
#define _LOS_SAMPLE_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
extern int g_num;
extern void LOS_Sample(int param);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _LOS_SAMPLE_H */

4. 配置BUILD.gn文件

創建BUILD.gn, 寫入配置信息

import("//build/lite/config/component/lite_component.gni")
static_library("my_app_lib") {
sources = [
"my_first_app.c",
"los_sample.c"
]
include_dirs = [
"include",
]
}
lite_component("camera_my_app") {
target_type = "executable"
features = [
":my_app_lib",
]
}

首先導入 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

{
"ohos_version": "OpenHarmony 1.0",
"board": "hi3516dv300",
"kernel": "liteos_a",
"compiler": "clang",
"subsystem": [
{
"name": "applications",
"component": [
{ "name": "mycamera", "dir": "//applications/sample/camera/myApp:camera_my_app", "features":[] }
]
}
],
"vendor_adapter_dir": "//vendor/hisi/hi35xx/hi3516dv300/hi3516dv300_adapter",
"third_party_dir": "//third_party",
"ohos_product_type":"",
"ohos_manufacture":"",
"ohos_brand":"",
"ohos_market_name":"",
"ohos_product_series":"",
"ohos_product_model":"",
"ohos_software_model":"",
"ohos_hardware_model":"",
"ohos_hardware_profile":"",
"ohos_serial":"",
"ohos_bootloader_version":"",
"ohos_secure_patch_level":"",
"ohos_abi_list":""
}

將剛才生成的camera_my_app組件,打包為applications應用,放入鴻蒙的子系統中。

6. 編譯

可以通過ssh登錄虛擬機或直接在虛擬機上進行編譯,

python build.py my_hi3516dv300 -b debug
*

注意:一定要帶上 debug參數,這樣才能啟動後才能方便進入OHOS的命令行模式。

*

如遇到找不到java路徑的情况,是由於新開源代碼中加入了應用打包工具引起的,前文已下好工具包,

再安裝 java即可修複。

sudo apt install openjdk-11-jre-headless
java -version

7. 燒錄系統

在上一篇完成過燒錄後,這裏只需要選擇userfs.img文件燒錄即可。

*

注意這裏的輸出目錄為my_hi3516dv300

*

點擊燒錄,然後重啟開發板即可。

8. 運行

燒錄完成後,我們在串口下進行調試,根據usb分配的串口號進行連接

在開發板啟動完成後,按回車進入OHOS命令行

./bin/camera_my_app

這裏camera_my_app就是我們之前定義的組件名稱,能正常看到輸出,那恭喜您已經在鴻蒙上運行了第一個程序了。

注意這裏的命名對應關系,官方示例中采用源文件、庫文件、組件名稱和應用名稱都采用相同命名,會便於項目管理。不過對新人來說不容易理解,這裏我都區分開了,可以再仔細梳理一下流程。

從源碼到庫,從庫到組件,再從組件到應用,最後進入OHOS系統執行。

資料下載

本期相關文件資料,可在公眾號“深度覺醒”,後臺回複:“ohos04”,獲取下載鏈接。

下一篇

我們將開發一個有界面的HAP應用,

並介紹一下更多的組件功能,

敬請期待...

往期推薦

版权声明:本文为[bluishfish]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201071211424755.html