概述
为了验证下openharmony中对文件的操作和原始的linux有没有什么区别,发现默认的镜像中没有编译文件的工具(例如vi、Nano等),所以从网上找了个比较早期的vi工具的源码,进行部署验证。
系统版本:openharmony5.0.0
开发板:dayu200
编译环境:ubuntu22
部署路径: //vendor/hihope/rk3568/samples
源码目录
创建//vendor/hihope/rk3568/samples/02_vi目录,并添加如下文件:
02_vi
├── vi.c # .c源代码
├── BUILD.gn # GN文件
其中,BUILD.gn表示编译脚本,vi.c表示编译源文件。
创建BUILD.gn
编辑BUILD.gn文件。
import("//build/ohos.gni")
ohos_executable("vi") {
sources = [ "vi.c" ] # 参与编译的源代码文件
part_name = "vi" # 模块名称
install_enable = true # 安装到系统中
}
✒️注意:
(1)BUILD.gn中所有的TAB键必须转化为空格,否则会报错。如果自己不知道如何规范化,可以:
# 安装gn工具
sudo apt-get install ninja-build
sudo apt install generate-ninjas
# 规范化BUILD.gn
gn format BUILD.gn
(2)可执行程序的名称
ohos_executable("vi")
中的vi
为可执行程序的名称,表明OpenHarmony编译时将编译一个可执行程序vi。
创建源代码
vi的简易版本的源代码可直接下载。代码中的备注比较详细,就不再赘述了。由于我没有做过类似的项目,但是从代码里还是学到了一些东西,最近工作重点是openharmony相关的,所以暂时不展开了。
在编译过程中报了如下两个错误:
问题一:unsihned char *不能转换为const char *
简单粗暴的加了个强制转换解决的
问题二:代码中未使用的变量会报如下错误:
直接删除/屏蔽即可解决。
部署说明
首先,在ohos.build(即主编译文件)添加需要编译的目录samples。在//vendor/hihope/rk3568/ohos.build添加编译模块系统名称。
{
"parts": {
"product_rk3568": {
"module_list": [
"//vendor/hihope/rk3568/default_app_config:default_app_config",
"//vendor/hihope/rk3568/image_conf:custom_image_conf",
"//vendor/hihope/rk3568/preinstall-config:preinstall-config",
"//vendor/hihope/rk3568/resourceschedule:resourceschedule",
"//vendor/hihope/rk3568/etc:product_etc_conf",
"//vendor/hihope/rk3568/hals/audio:hdf_audio_config",
"//vendor/hihope/rk3568/hals/codec/:hdf_codec_config",
"//vendor/hihope/rk3568/hdf_config/uhdf:hdf_config",
"//vendor/hihope/rk3568/window_config:window_config",
"//vendor/hihope/rk3568/samples:samples"
]
}
},
"subsystem": "product_hihope"
}
在samples/BUILD.gn文件添加一行编译引导语句。
import("//build/ohos.gni")
group("samples") {
deps = [
"02_vi:vi",
]
}
"02_vi:vi",
该行语句表示引入//vendor/hihope/rk3568/samples/02_vi参与编译。
编译命令
./build.sh --product-name rk3568 --build-target vi
验证是否成功:
手动传输
将执行文件拷贝出来并放到终端中
从虚拟机中拷出执行文件(vi)
zcc@ubuntu22:~/oh5.0.0$ sz out/rk3568/exe.unstripped/applications/prebuilt_hap/vi
通过hdc工具拷贝至终端中
hdc.exe file send .\vi /data/local/tmp/
运行程序
系统启动后,运行命令:
vi
可实现vi的基本操作指令。