【OpenHarmony】从入门到肝疼
总结自己在接触和开发OpenHarmony过程中,遇到的种种场景和问题,避免自己重复踩坑。在巩固自己知识的同时,加强对输出文档的撰写能力。也希望能帮助更多小伙伴了解到OpenHarmony,了解开源。
初衷
总结自己在接触和开发OpenHarmony过程中,遇到的种种场景和问题,避免自己重复踩坑。在巩固自己知识的同时,加强对输出文档的撰写能力。也希望能帮助更多小伙伴了解到OpenHarmony,了解开源。
官方指导文档
OpenHarmony官网入口
OpenHarmony官网开发文档
HarmonyOS开发者官网应用开发文档–程序框架
码云社区OpenHarmony开发者文档
拉瓦尔社区-讨论OpenHarmony技术相关的问题
电子发烧友-HarmonyOS技术社区
名词解释
名词 | 说明 |
---|---|
L0 | 轻量系统(mini) |
L1 | 小型系统(small) |
L2 | 标准系统(standard) |
环境搭建
轻量系统 Hi3861
小型系统 Hi3516
标准系统 Rk3568
Q&A
L1新增SA
官方提供的SA编写样例,是在“开发服务”那里完成API的实现。一般简单的功能,在“开发服务”实现API是能满足要求的。假如要实现的API属于一个服务下的多个功能模块,就需要使用到"子功能"了。
“开发服务的子功能”,在文档里,叫做Feature,一般通过SYSEX_FEATURE_INIT或SYS_FEATURE_INIT(还有其他方式,他们的区别就不过多描述)去完成Feature的初始化。需要在Feature注册API的时候,往往“开发服务”不进行API注册的动作,这时需要把“开发服务”中RegisterDefaultFeatureApi()去掉,以及创建服务对象时SERVER_IPROXY_IMPL_BEGIN到IPROXY_END的成员去掉,而Feature则需要把这些加上。
Q:文档中没有变量DefaultFeatureApi的描述。
A:DefaultFeatureApi是结构体类型名,由自己进行类型定义。一般采用默认的定义方式。
typedef struct {
INHERIT_SERVER_IPROXY;
} DefaultFeatureApi;
Q:文档上Feature创建接口对象时,使用了DEFAULT_IUNKNOWN_ENTRY_BEGIN和DEFAULT_IUNKNOWN_ENTRY_END把需要实现API接口包起来了,和“开发服务”的不一样。
A:需要实现API接口的接口对象,要把这两个宏去掉,替换成SERVER_IPROXY_IMPL_BEGIN和IPROXY_END,避免出现隐藏问题。
Q:【OpenHarmony】L1 新增SA这里的操作,为什么要多一个service的bin文件,而且还用到了sleep()。
A:开发常驻进程服务时,需要这么操作,如果是其他方式拉起的进程,可以自行尝试下,使用SYSEX_FEATURE_INIT()和SYSEX_SERVICE_INIT()。常驻服务,是由init拉起,进程起来后如果立即去SAMGR_Bootstrap(),Feature的注册会被忽略掉。经过测试,sleep2秒,是稳定的。
Q:改完SA的代码,L1设备烧完镜像后,屏幕不亮,镜像没有真正跑起来。
A:一步步还原代码,往往是配置的过程出了问题。
bundle.json编译问题
Q:bundle.json的 “inner_kits” 中明明有定义 “header_files” 里面的头文件,但是其他部件的BUILD.gn在加入对应的external_deps后,引用头文件提示找不到该头文件。
A:查看编译日志,发现编译选项-I 里没有该头文件的路径。
确认bundle.json中"inner_kits"里面"header_base"和"header_files"是否正确;再确认bundle.json中"inner_kits"里面"name"所在的BUILD.gn,有没有public_configs配置,没有的话要补上,例如
config("headers_config") {
visibility = [ ":*" ]
include_dirs = [ "include" ]
}
ohos_shared_library("libfoo") {
... ...
public_configs = [ ":headers_config" ]
... ...
}
相关链接
【OpenHarmony】L0L1 添加子系统/组件
【OpenHarmony】L1 新增SA
【OpenHarmony】L1 烧录的启动参数
【OpenHarmony】关于L1 Hi3516连接网络的相关说明
【OpenHarmony】标准系统 新增子系统/部件
下期预告:L2新增SA,L2的SA发布通知
后续日常更新
更多推荐
所有评论(0)