很荣幸提前拿到了XR806开发板,但是全志只是适配了1.1.2L.TS,而最新的Harmony已经到3.0_LTS了,决定尝试是适配最新的3.0_LES,折腾了大半天,起码还是适配好了 首先是vendor文件夹,鸿蒙3.0修改了很多文件夹名称和文件路径,需要在config.json中把该修改的都修改了。(security去掉好像对编译没什么影响,添加了还会报错,暂时不知道怎么搞的,先删除)
hals文件夹的内容也报错,我直接把海思的hals文件夹复制进来了
接下来编译hiview时提示有几个C库没找到,添加了C库还是报错,认真看才发现鸿蒙自身就屏蔽了C库,原因也不知道是为啥,总之先屏蔽掉下面两个编译选项
编译依旧报错。。。提示asmflags重复了,这个全志本身的代码中定义了一个asmflags在旧系统中没有报错,但是新的系统估计是鸿蒙官方补上了漏洞,果断把全志的代码给删了。 之后依旧是愉快的报错bad instruction
错误说的是汇编没办法识别typedef(废话啊,汇编还能识别typedef不上天),明显是编译汇编时,也包含了.h,导致出错,只能把系统源码再改一改
然后把刚刚删掉的asmflags改回来,等于全志的代码先别动。 编译依旧报错,但接下来的报错都是因为鸿蒙系统代码引起的修改,只放图了
总算全部编译通过后,ld链接时又报错,提示没有定义snprintf_s,这个库函数确实在部分C库中没有,然后我在鸿蒙的utils/native/base/src文件夹里面找到了原型,正如里面的字面描述,这个文件夹就是个增强型的C库,而从第一个问题报出来我就知道全志用的是gcc的标准C库,改掉SDK的c库我可没那么大能耐,就偷懒把utils/native/base/src里面的snprintf_s复制下来,单独弄成一个静态库了,之后总算编译通过了,对比1.1.2,flash大了5k。。。
修改点实在太多了,上面的可能也有不少遗漏,还是等全志赶紧放出3.0的SDK吧。