【OpenHarmony】首次开发指南

前提准备

  1. 软件准备:下载安装mobaXterm 、devEco Studio、Vscode
  2. 注册账号,适配ssh,过程如下
    在这里插入图片描述

devEco Studio工程开发

  1. devEco Studio的安装与下载:链接
    注意:安装完打开软件时,会要求你安装sdk,可以注意下sdk的安装路径;下载sdk时也会下载hdc,可以将hdc拷贝一份命令为hdc_std,然后将其目录配置到环境变量里。例如我的目录就是D:\software\hwSdk\openharmony\9\toolchains

  2. 第一个devEco工程创建:链接

  3. devEco工程签名
    手动配置:链接
    自动配置:登录devEco studio用华为账号(软件右上角);sdk下载OH版本;在project structure里面配置自动签名;

NAPI接口

NAPI的开发示例:可用于学习
https://www.51cto.com/article/705787.html
https://www.51cto.com/article/693626.html

hdc调试命令

hdc常用命令:链接

hdc kill   //杀死hdc
hdc start   //重启hdc
hdc list targets  //查看连接的设备
hdc shell bm get --udid    //查看UDID
hdc file recv /system/lib/module/libfont.z.so D:\OH\push\raw  传输文件到本地
hdc shell mount -o rw,remount /    解决send失败,文件目录只读问题
hdc file send D:\OH\push\libfont.z.so /system/lib/module/   本地文件传输到设备上
hdc shell reboot  重启设备
hdc  hilog > xxx/log.txt  收集日志
hdc shell rm -rf /data/log/hilog/    清除日志目录
hdc file recv /data/log/hilog D:\OH\push\hilog   导出日志

【问题一】hdc突然查找不到设备,“Connect server failed”
【解决】:直接删除环境变量中的HDC_SERVER_PORT端口;倘若设备管理器中有hdcExternXXXX.exe,就关闭devEco Studio;终端命令行hdc kill、hdc start重启;重新开一个终端命令窗口hdc list targets显示ok
其他参考:https://www.hmxthome.com/develop/371.html

【问题二】/data/log/hilog目录下没有日志信息
【解决】需要日志落盘,执行如下

C:\Users\f00574385>hdc shell
# cd
# cd /data/log/hilog
# ls
# hilog -Q pidoff
Set flow control by process to disabled, result: Success [CODE: 0]
# hilog -Q domainoff
Set flow control by domain to disabled, result: Success [CODE: 0]
# hilog -G 100M   //设置日志缓存
Set log type app buffer size to 100.0M successfully
Set log type init buffer size to 100.0M successfully
Set log type core buffer size to 100.0M successfully
# hilog -p off   //打开c++隐藏日志
Set hilog privacy format off successfully
# hilog -b D    //设置日志打印最低等级为DEBUG
Set global log level to D successfully
# hilog -w start -t kmsg //日志落盘,保存路径为/data/log/hilog/
Persist task [jobid:2] start successfully

# hdc shell hilog -b X  关闭日志

OH代码下载与编译

1、代码下载

repo init -u [email protected]:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

2、编译

全量编译:bash build/prebuilts_download.sh && ./build.sh --product-name rk3568 --ccache
输出目录:./out/rk3568/packages/phone/images
然后刷机。

模块编译(arkui):./build.sh --product-name rk3568 --build-target ace_engine --ccache (其他模块:graphic_standard)
输出目录:./out/rk3568/arkui/ace_engine/

3、刷机教程

OpenHarmony RK3568开发板烧写过程总结梳理_maskrom切换成loader模式_Hero_rong的博客-CSDN博客

4、问题记录

【问题一】【编译】编译出现自己未曾修改的失败;
【解决】最好编译前执行一下

rm -rf out build/resources/args/*.json
bash build/prebuilts_download.sh
./build.sh --product-name rk3568 --ccache

【问题二】【编译】找不到函数定义
【原因】纯虚函数在父类定义后,派生的子类都需要定义其实现。

【问题三】【编译】ld.lld: error: undefined symbol: xxx
【原因】带ld.lld都是跟库有关的报错,要想调某个函数,不止是把头文件包含进来,而且还要把库在编译脚本中添加进去,不然很容易出现这种找不到函数的情况

   deps=  [ "//foundation/graphic/graphic_2d/rosen/modules/texgine:libtexgine" ]
   include_dirs = ["//foundation/graphic/graphic_2d/rosen/modules/texgine/src/" ]

【问题】【开发】获取系统字体时,OH代码打印是中文,应用层打印的是乱码
【解决】应用层使用的utf-8编码,底层OH的是gdk编码

【问题】【提pr】更新自己commit时候,带上了别人的修改
【原因】git pull了个人仓,由个人仓退至OH公共仓时,个人仓代码滞后,导致回退了别人的修改。

git branch -vv  //查看当前本地分支挂载的远程分支是哪个?
git branch --set-upstream-to=tmp/master    // 确保本地分支挂载的远程分支改为自己fork的个人仓tmp
git add ./
git commit -sm "xxx"  //或者  git commit --amend
git pull --rebase  origin master 将公共仓的代码更新至本地(因为公共仓有别人已合的commit)
//如果有冲突,就解决冲突
git push tmp HEAD:master -f //推送到自己的远程仓,此时会自动更新pr,需要-f  因为本地与个人仓有差异,个人仓滞后。

linux命令

记一下我总是忘记的命令:

du -sh  查看该目录占用内存
zip -r xxx.zip xxx/   压缩该目录
pwd  查看绝对路径

其他问题记录

【问题一】【电脑】用kvm贼卡,直接usb就没有问题
【解决】直接去电脑设置里重新更新下驱动即可;

猜你喜欢

转载自blog.csdn.net/cocoduco/article/details/130995421