📝往期推文全新看点(文中附带最新·鸿蒙全栈学习笔记)
🚩 鸿蒙(HarmonyOS)北向开发知识点记录~
🚩 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~
🚩 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
🚩 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
🚩 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
🚩 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
🚩 记录一场鸿蒙开发岗位面试经历~
📃 持续更新中……
前言
终于等到下载代码的时刻了,业内不叫下载代码叫“拉代码”,上传代码叫“上库”,编译叫构建。
一、 安装路线
- 1.避坑指南
- 2.代码拉取及编译
- 2.1 Hi3518 编译(属于 L1)
- 2.2 3516-linux 编译
- 2.3 Hi3516 编译(属于 L2)
- 2.4 RK3568 编译
- 3.系统全量编译
- 4.组件编译举例
二、避坑指南
1. repo sync -c -j4
,同步代码,数字是否越大越好?
要根据电脑配置选取合适的核数。数字 4 是指拉去代码的核数,数字越大拉取速度越快,太大会导致命中率下降,因而拉取代码失败,选择太小,拉取代码速度缓慢。
2. 系统编译 32 位,用例、组件能否编译成 64 位?
--target-cpu arm64
, 表明为编译 64 位系统,没有则默认 32 位系统;- 系统编译完成后,测试用例以及个别组件编译也必须和系统位数一致,否则会导致崩溃 Crash;
三、代码拉取及编译
1. 代码拉取官方手册
参考网址:https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/sourcecode-acquire.md
2. master 主干代码拉取
拉取代码之前要建立一个代码目录,例如: master_code
mkdir master_code
cd master_code
在新目录下拉取代码,如下指令逐条执行
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo start master --all
repo forall -c 'git lfs pull'
bash build/prebuilts_download.sh
3.修改 dash 为 bash
终端输入命令: ls -l /bin/sh
显示结果是: /bin/sh -> dash
输入: sudo dpkg-reconfigure dash
出现选择,选择否回车,重新输入:ls -l /bin/sh
wyyname@n019949:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 9 6月 16 2023 /bin/sh -> /bin/bash
四、系统全量编译
1. Hi3518 编译(属于 L1)
输入’hb set’, 上下移动箭头选择产品型号,回车选择对应开发板,例如选择 ipcamera_hispart_aries
执行 hb build
构建
编译完成,如下图:
2. 3516-linux 编译
输入’hb set’,选择 ipcamera_hispark_taurus_linux
使用 hb build -f
全量构建
3516/3518/3861 是同类型,如图:
编译成功
3. Hi3516 编译(属于 L2)
由于 L2 目前接触只涉及 3516
在根目录输入:./build.sh --product-name Hi3516DV300
Hi3516DV300 编译成功
4. RK3568 编译
虚拟机 13GB 内存、12 个处理器编译一套全量代码在 2024 年 1 月 1 日前至少需要 4 个小时。
1. 32 位系统编译(默认)
./build.sh --product-name rk3568 --ccache
2. 64 位系统编译
./build.sh --product-name rk3568 --target-cpu arm64 --ccache
3. 编译成功
五、组件编译举例
1. 单独编译内核
cd out/kernel/src_tmp/linux-5.10
export PRODUCT_PATH=vendor/hihope/rk3568
./make-ohos.sh TB-RK3568X0
2. Audio so 或者 bin 单独编译
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/hal/hdi_passthrough:hdi_audio
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/sample:audio_sample_capture --target-cpu arm64
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/sample:audio_sample_event --target-cpu arm64
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/sample:audio_sample_render --target-cpu arm64
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/sample:idl_render
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/sample:idl_capture
3. audio 用例全编译
./build.sh --product-name rk3568 --build-target audio_test_entry --target-cpu arm64
4. 单编 arkui
./build.sh --product-name rk3568 --ccache --build-target libace_compatible
5. 单编 multimodalinput
./build.sh --product-name rk3568 --ccache --build-target libmmi-server
./build.sh --product-name rk3568 --ccache --build-target libmmi-util