前言
上一篇,我们把编译和烧录环境都搭建好了,这一篇我们来初探一下鸿蒙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.c
和los_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应用,
并介绍一下更多的组件功能,
敬请期待...
往期推荐
转载:https://blog.csdn.net/weixin_47479625/article/details/111659548