OpenHarmony(鸿蒙南向开发)——轻量和小型体系三方库移植指南(二)
往期知识点记录:[*] 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总
[*] 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~
[*] OpenHarmony(鸿蒙南向开发)——轻量体系芯片移植指南(一)
[*] OpenHarmony(鸿蒙南向开发)——轻量体系芯片移植指南(二)
[*] OpenHarmony(鸿蒙南向开发)——轻量体系芯片移植指南(三)
[*] OpenHarmony(鸿蒙南向开发)——轻量体系芯片内核移植
[*] OpenHarmony(鸿蒙南向开发)——小型体系芯片移植指南(一)
[*] OpenHarmony(鸿蒙南向开发)——小型体系芯片移植指南(二)
[*] OpenHarmony(鸿蒙南向开发)——小型体系芯片移植指南(三)
[*] OpenHarmony(鸿蒙南向开发)——标准体系移植指南(一)
[*] OpenHarmony(鸿蒙南向开发)——标准体系移植指南(二)Linux内核
[*] OpenHarmony(鸿蒙南向开发)——轻量和小型体系三方库移植指南(一)
[*] OpenHarmony(鸿蒙南向开发)——轻量和小型体系三方库移植指南(二)
[*] 持续更新中……
Makefile方式组织编译的库移植
以yxml库为例,其移植过程如下文所示。
源码获取
从堆栈获取yxml源码,其目次结构如下表:
表1 源码目次结构
名称描述yxml/bench/benchmark相关代码yxml/test/测试输入输出文件,及测试脚本yxml/Makefile编译组织文件yxml/.gitattributes-yxml/.gitignore-yxml/COPYING-yxml/yxml.c-yxml/yxml.c.in-yxml/yxml-gen.pl-yxml/yxml.h-yxml/yxml.md-yxml/yxml-states- 设置交织编译
设置Makefile的交织编译工具链,修改并编译该库,生成OpenHarmony平台的可实行文件,步骤如下:
[*]设置工具链 将下列clang工具链配置替换掉yxml库根目次的Makefile(即表1中的文件)中的原有配置。
clang工具链配置:
#设置交叉编译工具链,确保工具链所在路径已经添加到了PATH环境变量中
CC:=clang
AR:=llvm-ar
#cflags中必须要添加--target及--sysroot选项
CFLAGS:=-Wall -Wextra -Wno-unused-parameter -O2 -g --target=arm-liteos -march=armv7-a -mfloat-abi=softfp -mcpu=cortex-a7 -mfpu=neon-vfpv4 --sysroot=$(OHOS_SYSROOT_PATH)
原有配置:
CC:=gcc
AR:=ar
CFLAGS:=-Wall -Wextra -Wno-unused-parameter -O2 -g
[*]实行编译 linux命令行中进入yxml的源文件目次(即图1所示目次),实行下列命令:
make test OHOS_SYSROOT_PATH=...
此中OHOS_SYSROOT_PATH需用绝对路径指定出sysroot所在目次,以OpenHarmony为例即源码根目次下out/hispark_xxx/ipcamera_hispark_xxx/sysroot目次的绝对路径。上述目次会在全量编译后生成,因此移植前先完成一次全量编译。
[*]检察结果 步骤2操纵完成后,yxml下会生成out目次,里面有静态库文件和测试用例:
表2 yxml编译生成目次
名称描述OpenHarmony/third_party/yxml/yxml/out/lib/编译生成的静态库的存放目次OpenHarmony/third_party/yxml/yxml/out/test/编译生成的测试用例及其输入输出等文件的存放目次 测试
yxml库测试步骤与double-conversion库基本一致,可参考CMake方式组织编译的库移植的测试过程,以下内容介绍yxml库测试用例的利用方法:
表3 生成的test目次结构表示
名称描述OpenHarmony/third_party/yxml/yxml/out/test/test.sh主动化测试脚本,由于OpenHarmony不支持脚本运行,因此无法利用,可参考其内容手动测试OpenHarmony/third_party/yxml/yxml/out/test/test用于测试的可实行文件OpenHarmony/third_party/yxml/yxml/out/test/*.xml测试输入文件OpenHarmony/third_party/yxml/yxml/out/test/*.out期望的输出文件 test.sh内容如下所示:
#!/bin/sh
for i in *.xml; do
b=`basename $i .xml`
o=${b}.out
t=${b}.test
./test
<$i >$t
if [ -n "`diff -q $o $t`" ]; then
echo "Test failed for $i:"
diff -u $o $t
exit 1
fi
done
echo "All tests completed successfully."
由于OpenHarmony的shell中暂不支持输入输出重定向(<和>),以是测试时必要将输入*.xml文件内容直接复制进shell后回车,输出内容会直接展示在shell窗口。过程如下:
下列操纵假定已按照2.4节的步骤搭建OpenHarmony,挂载并进入nfs目次:
[*] 实行下列命令
./test
[*] 复制*.xml内容到shell 以表3test目次下pi01.xml为例,内容如下,输入到shell并回车:
<?SomePI abc?><a/>
<textarea id="copy1722498774660" style="color: inherit; font: inherit; position: absolute; top: -9999px; left: -9999px; z-index: -9999;"></textarea>
[*]比较shell中输出的内容与表3test目次中对应的*.out文件是否一致 输出结果如下:
pistart SomePI
picontent abc
piend
elemstart a
elemend
ok
经比较与表3test目次下pi01.out内容一致,测试通过。
将该库编译添加到OpenHarmony工程中
yxml库添加的过程除了适配文件build.gn和config.gni有些许变革外,其他和double-conversion库完全一致,参考CMake方式组织编译的库移植的配置过程。要修改的适配文件及添加后的目次结构如下:
[*]yxml库新增的BUILD.gn实现如下:
import("config.gni")
group("yxml") {
if (ohos_build_thirdparty_migrated_from_fuchisa == true) {
deps = [":make"]
}
}
if (ohos_build_thirdparty_migrated_from_fuchisa == true) {
action("make") {
script = "//third_party/yxml/build_thirdparty.py"
outputs = ["$target_out_dir/log_yxml.txt"]
exec_path = rebase_path(rebase_path("./yxml", root_build_dir))
command = "make clean && $MAKE_COMMAND"
args = [
"--path=$exec_path",
"--command=${command}"
]
}
}
[*]yxml库新增的config.gni配置如下:
TEST_ENABLE = "YES"
if (TEST_ENABLE == "YES") {
MAKE_COMMAND = "make test OHOS_SYSROOT_PATH=${root_out_dir}sysroot/"
} else {
MAKE_COMMAND = "make OHOS_SYSROOT_PATH=${root_out_dir}sysroot/"
}
[*] 添加完成后目次结构表示:
表4 添加到工程后的目次结构
名称描述OpenHarmony/third_party/yxml/BUILD.gn将三方库参加工程的gn适配文件OpenHarmony/third_party/yxml/build_thirdparty.pyGN调用shell命令脚本文件,由上面GN文件将相关命令传入,实现GN转MakefileOpenHarmony/third_party/yxml/config.gni三方库编译配置文件,可修改该文件来配置用例是否参加构建等OpenHarmony/third_party/yxml/yxml/要移植的三方库目次 经常有很多小同伴抱怨说:不知道学习鸿蒙开发哪些技术?不知道必要重点掌握哪些鸿蒙应用开发知识点?
为了能够资助到各人能够有规划的学习,这里特殊整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习蹊径,包含了鸿蒙开发必掌握的核心知识要点,内容有(ArkTS、ArkUI开发组件、Stage模型、多端摆设、分布式应用开发、WebGL、元服务、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、体系定制移植等等)鸿蒙(HarmonyOS NEXT)技术知识点。
https://i-blog.csdnimg.cn/direct/f94d1fce216a40caa550531c282b816b.png#pic_center
《鸿蒙 (Harmony OS)开发学习手册》(共计892页):https://gitcode.com/HarmonyOS_MN/733GH/overview
怎样快速入门?
1.基本概念
2.构建第一个ArkTS应用
3.……
https://i-blog.csdnimg.cn/direct/43225e87b7a54407a65b8250b9ee94c8.png
开发基础知识:
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私掩护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……
https://i-blog.csdnimg.cn/direct/73589872c1654796a659656162da8256.png
基于ArkTS 开发
1.Ability开发
2.UI开发
3.公共变乱与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台使命(Background Task)管理
11.设备管理
12.设备利用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……
https://i-blog.csdnimg.cn/direct/4e5081ccb73d49c39da39cacd6afdeaa.png
鸿蒙开发面试真题(含参考答案):https://gitcode.com/HarmonyOS_MN/733GH/overview
https://i-blog.csdnimg.cn/direct/86cc41a1de0247329011c1537e67be11.png
OpenHarmony 开发环境搭建
https://img-blog.csdnimg.cn/img_convert/eeae483f8048611b6c4a6dddfe899a6c.png
《OpenHarmony源码分析》:https://gitcode.com/HarmonyOS_MN/733GH/overview
[*]搭建开发环境
[*]Windows 开发环境的搭建
[*]Ubuntu 开发环境搭建
[*]Linux 与 Windows 之间的文件共享
[*]……
[*]体系架构分析
[*]构建子体系
[*]启动流程
[*]子体系
[*]分布式使命调度子体系
[*]分布式通信子体系
[*]驱动子体系
[*]……
https://img-blog.csdnimg.cn/img_convert/b2a7c0f56b33ef83d8199a6e53e443f2.png
OpenHarmony 设备开发学习手册:https://gitcode.com/HarmonyOS_MN/733GH/overview
https://img-blog.csdnimg.cn/img_convert/35b4e458bb0a8a3bb1c75278c7493fd5.jpeg
https://i-blog.csdnimg.cn/direct/92382879269940889c578d20dd5b6641.gif#pic_center
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]