https://harmonyos.51cto.com/#zz
前言
上一篇,我们把编译和烧录环境都搭建好了,这一篇我们来初探一下鸿蒙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系统执行。
资料下载
下一篇预告
下一篇,我们将开发一个有界面的HAP应用,并介绍一下更多的组件功能,敬请期待...
©著作权归作者和HarmonyOS技术社区共同所有,如需转载,请注明出处,否则将追究法律责任
https://harmonyos.51cto.com/#zz