对鸿蒙操作系统和AI Camera Hi3516dDV300 开发过程的记录和理解
写在前面
鸿蒙的资料比较少,各方面出现报错之后可能无法解决,所以在开始开发的时候,千万不要乱搞,不然会出现很多重大错误,等之后理解之后,会发现走不少弯路。
我个人支持官网的框架,所以在开发前先看官网,具体遇到问题再逐个解决,官网作为主线,我使用全部linux端开发,包括华为deveco工具的使用、系统烧录等等。
在下载源码的时候不要嫌弃设置git公钥麻烦,因为它的速度确实蛮快的,另外注意需要安装git-lfs工具(在适当位置进行下载,下面会说),不然下载源码之后的构建无法完成。
官方仓库 https://gitee.com/openharmony/docs/blob/master/zh-cn/readme.md
下载git-lfs:
1. curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
2. sudo apt-get install git-lfs
3. git lfs install
我是使用标准系统入门的
官方仓库:
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-standard.md
对于大部分开发者而言,对于鸿蒙一就是开发环境的搭建,比如python、node等开发环境,如果习惯使用docker则可以直接跳过这一步,自己配置的话有一些好处,就是在之后遇到问题的时候能快速定位,也能增加对Linux构架的熟悉程度。
搭建好基本环境之后一个大头就是下载源码和编译,需要借助repo,对于不熟悉git的人来说可能有些不适应,其中也需要克服一些环境问题
鸿蒙的烧录比较特殊,所以烧录也是侧重环境端的难点。
下载源码的坑
首先需要安装repo,这可能需要权限对于大部分虚拟机来说,对于双系统而言需要修改下载路径和添加环境变量。
权限
我喜欢用可视化和su
sudo nautilus #如果拒绝访问则输入xhost local:nautilus赋予本地身份重试
sudo su #或者用root权限
安装repo
依赖工具
sudo apt-get install git-core
sudo apt-get install git-core curl
下载repo
mkdir ~/bin/
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
权限
chmod a+x ~/bin/repo
环境变量
export PATH=~/bin:$PATH #加到 ~/.bashrc可永久保存PATH环境变量
用户配置 为了使你的主机能够下载仓库
git config --global user.email "yourname@163.com"
git config --global user.name "yourname"
#git config --global --list可以查看录入的信息对不对
生成公钥
ssh-keygen -t ed25519 -C "ohoslinux" #引号内是这个公钥的名称
cat ~/.ssh/id_ed25519.pub #复制到gitee里面账户去添加即可 具体可看https://gitee.com/help/articles/4181#article-header0
ssh -T git@gitee.com #次使用需要确认并添加主机到本机SSH可信列表。
#若返回 Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。
记得需要安装git lfs ubuntu安装
1. curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
2. sudo apt-get install git-lfs
3. git lfs install
下载源码
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
源码下载成功就已经成功一大半了,但是上述命令千万要全部跑好哦 如果出现警告或者报错可以留言,用码云下载源码速度会快很多 大概十几分钟不到的样子
顺利到这里就恭喜各位啦
修改代码
见下面官网链接教程
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-create.md
ohos.build文件包含两个部分,第一部分subsystem说明该子系统的名称,parts定义该子系统包含的部件,要添加一个部件,需要把该部件对应的内容添加进parts中去。添加的时候需要指明该部件包含的模块module_list,假如有提供给其它部件的接口,需要在inner_kits中说明,假如有测试用例,需要在test_list中说明,inner_kits与test_list没有也可以不添加。
“applications:hello”:{}, # “部件所属子系统名:部件名”:{}
编译
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-build.md
官网说的很清楚了
编译所生成的文件都归档在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/ 目录下。
编译之后镜像操作需要烧录,要找对路径
这有几个坑:
- 报错 找不到dataclasses模块
方法 pip3 install对应模块 - 编译报错 查找log文件定位
发现ohos.build里面不能有#号键备注 全部删除 - build.gn 文件存在不恰当缩进,删除
- [OHOS ERROR] ninja: error: ‘…/…/applications/standard/hello/src/helloworld.c’, needed by ‘obj/applications/standard/hello/src/helloworld/helloworld.o’, missing and no known rule to make it
解决方法
烧录
下载deveco tool之后运行下载好的.sh文件
chmod u+x datelog.sh
赋予权限之后运行
./xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.sh
报错解决:
这个需要安装一些依赖关系包
sudo apt-get install python3.8-dev
sudo apt-egt install libffi-dev
pip install PyNaCl==1.4.0
运行完成之后再次运行sh文件
记录的一些小插曲
Ubuntu开机出错
the root filesystem on /dev/sda6 requires a manual fsck
这个错误是要求重新检测磁盘,和终端出现的报错是一起出现的,重启的时候可能会出错,可能是错误修改码云repo文件权限导致的
解决方法:
fsck /dev/sda6
#之后一路yes即可 最终输入reboot