赞
踩
控件与应用的区别,这应该是一个很少被人提及的话题,刚进入鸿蒙圈,接触的就是高阶控件的开发,引发了很多关于控件与用用的思考,也踩了不少的坑,记录一下。
鸿蒙控是需要写入手机系统的SO。我们的控件只有一个JS文件,通过BUILD.gn和xxx.cpp文件将xxx.js编译为SO,最后,通过hdc工具命令将SO包烧录到鸿蒙系统中。
- // 查看设备是否连接
- hdc list targets
-
- // 以读写模式挂载系统分区
- hdc shell mount -o rw,remount /
-
- // 将本地文件,加载到系统的/system/lib64/module/arkui/advanced/
- 这个位置
- hdc file send libtesthelloworld.z.so /system/lib64/module/arkui/advanced/
-
- // 同步so到系统
- hdc shell sync
-
- // 重启设备
- hdc shell reboot
- // 将开发包的控件代码放入华为计算云指定位置
- /home/user/code/oh_code/foundation/arkui/ace_engine/advanced_ui_component
-
- // 配置编译环境(仅第一次执行)
- ./build/prebuilts_download.sh --tool-repo=http://hmf.inXXXXX.com:9080 --npm -registry=http://mirrors.tools.XXXXX.com/npm/ --trusted-host=mirrors.tools.XXXXX.com --pypi-url=http://mirrors.tools.XXXXX.com/pypi/simple-skip-ssl
-
- // 编译SO
- ./build_system.sh --abi-type generic_generic_arm_64only --device-type hisi_all_phone_standard --ccache --build-variant root --build-target ace_engine
-
- // 获取我们编译出来的SO包
- /home/user/code/oh_code/out/generic_generic_arm_64only/hisi_all_phone_standard/arkui/ace_engine
-
App应用:可以在包里面调用任何资源,中英文等我们也可以通过resources中引入,自定义性比较强。
高阶控件:写入鸿蒙系统的应用,只能依托系统中存在的能力进行二次开发,或通过C++开发底层应用,提供给ArkTS进行调用。
原因:拖拽事件冲突
解决方案:Image增加draggable属性,设置为false
反思:鸿蒙的API文档不是很靠谱(遇到很多次了),每个版本的API属性默认不一定相同,有些属性需要自己去测试。
Image("sys.media.ic_public_ok").draggable(fasle)
2023/12/05 12:10
未完,等待继续更新...
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。