OpenHarmony编译

简介:本文将会介绍编译OpendHarmony环境的搭建、编译、和刷机(rk3568)

使用场景:修改系统源码,需要验证修改的功能是否正确、编译镜像、编译SDK

1、VS Code,下载链接,用于修改源码

2、linux环境搭建 用于编译源码

3、DevEco Studio,zh-cn/release-notes/Readme.md · OpenHarmony/docs - Gitee.com 用于验证修改的源码

4、hdc命令配置,环境变量 path里增加路径 sdk的toolchains目录路径。sdk位置参考第八点

一, linux 环境搭建

安装linux系统:最好是ubuntu 20.04.6 没有的话,安装20.04.2,创建好用户及密码

系统安装好后,需要将源替换成阿里源

sudo vim /etc/apt/sources.list

按"Insert"键进入编辑模式,将里面的内容清空,把下面的内容复制进去:

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

更新缓存和升级:

sudo apt-get update

二,安装MobaXterm_Personal_22.1、samba

在windows上安装MobaXterm_Personal_22.1,可在百度上搜索下载,也可 飞书 找我要

安装完成后,配置如下

以上截图是为了window保持与linux连接不被中断,如果在下载代码或者编译过程中中断,那么linux的工作也将被中断,所以windows要保持连接且不可待机 关机

建立连接 如图:

点击ok后输入 密码建立连接,连接成功后,左侧会出现一定的目录,但不是我截图的这样,会是原始目录

linux安装samba工具,以便从window的映射盘直接读取资源

参考连接 :

https://www.jb51.net/server/291322elw.htm

path路径就是windows映射的路径

samba安装好后,在windows上按 win+r键

运行后:在红框处右键 映射网络驱动器

三,利用MobaXterm_Personal_22.1工具 在 linux 安装git、git-lfs、 repo 工具,以供下载源码使用

1,安装git

sudo apt install git-all

配置git,并生成密钥,将公钥放在gittee上 请参考码云帮助中心

git config --global user.name "yourname"

git config --global user.email "your-email-address"

git config --global credential.helper store

2,安装git-lfs,下载二进制大文件使用

sudo apt install curl

sudo apt install python3-pip

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash

sudo apt-get install git-lfs

git lfs install

3,安装repo: ~代表当前用户根目录

mkdir ~/bin

curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo

chmod a+x ~/bin/repo

pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

vim ~/.bashrc # 编辑环境变量

export PATH=~/bin:$PATH # 在环境变量的最后添加一行repo路径信息

source ~/.bashrc # 应用环境变量

四**,利用MobaXterm_Personal_22.1工具 在** linux 上准备编译环境,(头铁的可以不加下面这些依赖,如果编译失败,还是乖乖的加上吧)

linux安装依赖工具:

1.sudo apt install aptitude

2.sudo aptitude install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64-cross lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libncurses5-dev libncursesw5 libstdc++6 vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev

3.sudo apt install gcc-arm-none-eabi libtinfo-dev libtinfo5 genext2fs liblz4-tool libssl-dev openjdk-8-jre

4.sudo apt-get update

5.sudo apt install default-jdk

6.sudo apt install mtd-utils

7.sudo apt install scons

8.sudo apt install gcc-arm-none-eabi

9.sudo apt install gcc-arm-linux-gnueabi

10.sudo apt-get install libssl-dev

11.sudo apt-get install genext2fs

五**,利用MobaXterm_Personal_22.1工具 在linux上下载源码**

#在当前用户目录下新建一个代码仓目录,可以写当前日期如:0523,cd 0523 并执行以下命令初始化仓库

#可使用repo + ssh :repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify初始化

#也可使用repo + https:repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify初始化,推荐使用https,因为方便查看下载中断错误

repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify

#更新文件 -j28为使用28个线程同步代码,最大32,如果网速不好,最好去掉 -j28,

repo sync -c -j28

#更新lfs 文件

repo forall -c 'git-lfs pull'

#预编译

build/prebuilts_download.sh

#编译rk3568镜像

./build.sh --product-name rk3568 --ccache

#编译SDK

./build.sh --product-name ohos-sdk --gn-args full_mini_debug=false

六,下载源码可能会被中断,或者某个git仓库被意外中断

例如错误:

error: RPC 失败。curl 56 GnuTLS recv error (-9): Error decoding the received TLS packet.

error: RPC 失败。curl 56 GnuTLS recv error (-54): Error decoding the received TLS packet.

1.此类似错误可能是由于git缓存不够,或者网速不稳定,或者是网速不好同时开启线程多导致,如果是线程多引起,则去掉第五点中的 -j28,如果是缓存和网速引起,则使用以下命令:

sudo apt-get install gnutls-bin

git config --global http.sslVerify false

git config --global http.lowSpeedLimit 0

git config --global http.lowSpeedTime 999999

git config --global http.postBuffer 5000000000 #设置5个G的缓存

2.如果执行上面还是下载中断,接着执行下面这句压缩代码传输,

git config --global core.compression 9 压缩代码传输

#git config --global --unset core.compression 命令可恢复默认设置

3.如果还中断:修改mtu值 ifconfig可以查看enp1s0的具体叫什么,每个电脑不一样

sudo chmod 777 /sys/class/net/enp1s0/mtu

sudo echo "9000" > /sys/class/net/enp1s0/mtu

查看mtu值

cat /sys/class/net/enp1s0/mtu

重启网卡enp1s0

sudo ip link set dev enp1s0 down

sudo ip link set dev enp1s0 up

4.如果还是中断,尝试更新curl

sudo apt update

sudo apt upgrade curl

5,如果还是下载中断,可能是由于白天使用网络的人数多,可以试试写个自动化定时脚本,让脚本在晚上下载代码并编译,源码代码量比较大,上百个G,编译过后更是达到几百个G,注意磁盘空间,网速会瞬间撑满宽带,注意别下载别的东西

七**,vscode连接linux代码**

1,安装插件 Remote SSH

此工具用于连接linux代码,具体参考以下网址:

https://blog.csdn.net/m0_60607289/article/details/138987450

最终配置文件如下:

Host 10.50.80.57

HostName 10.50.80.57

User xxxx(linux登录的名字)

Port 22

ForwardAgent yes

2 安装插件C++以便代码点击跳转,必须基于第一步成功的基础之上

,linux编译后的产物路径,替换sdk可用上面的samba映射盘操作

1,rk3568镜像位置:

linux位置(以下out目录均指linux目录):out/rk3568/packages/phone/images/

2,sdk位置:

4个目录位置 ets 、js、previewer、 toolchains

out/sdk/ohos-sdk/windows/

1个native子目录位置 :native\sysroot\usr(本地windows sdk位置)

out/sdk/sdk-native/os-irrelevant/sysroot/usr/

当sdk编译好后,需要将DevEco的Openharmony SDK以上5个目录替换 ,注意 native不是全部替换,是native\sysroot\usr下的两个目录替换

DevEco的Openharmony SDK 查看位置 File->setting->Openharmony SDK

还可以直接5个目录全部替换

out/sdk/packages/ohos-sdk/windows/

九**,开发板烧录镜像**

1、下载安装烧写所需驱动与工具

从该链接下载 烧写所需驱动和工具

驱动及工具在该路径下:docs-master\HiHope_DAYU200\烧写工具及指南\windows

安装USB驱动

双击windows\DriverAssitant\DriverInstall.exe安装USB驱动。

导入配置文件

双击\windows\RKDevTool.exe打开烧写工具,鼠标右键选择导入配置,从前面下载的日构建镜像目录中选择config.cfg导入

注意:首次导入时,对着空白处 右键清空所有配置,1、需将烧写工具里的路径正确配置成日构建镜像所在的路径;2、右键选择导入配置,替换原工具路径下的config.cfg文件。路径可以直接用映射盘的路径

2、烧写

开发板连接电源,USB线连接PC

切换到LOADER模式烧写

按住 板子上的Recovery键,然后按一下 reset键,待工具界面显示LOADER 设备后,松开Recovery键,设备进入loader模式,点击执行开始烧写,如图:

右边出现"下载完成字样",即代表烧写完成,等待板子重启

相关推荐
开心就好20252 天前
iOS App 安全加固流程记录,代码、资源与安装包保护
后端·ios
开心就好20252 天前
iOS App 性能测试工具怎么选?使用克魔助手(Keymob)结合 Instruments 完成
后端·ios
谢小飞2 天前
如何让AI用一个下午开发上架Chrome插件助我摸鱼
前端·chrome
小溪彼岸2 天前
谷歌发布Gemini in Chrome,Chrome正式成为AI浏览器
chrome·google
小溪彼岸3 天前
谷歌上线Gemini in Chrome,想免费使用还需打怪升级
chrome·google
zhongjiahao3 天前
面试常问的 RunLoop,到底在Loop什么?
ios
wvy4 天前
iOS 26手势返回到根页面时TabBar的动效问题
ios
fthux4 天前
大道至简 - Juejin Notifier - 掘金消息通知小助手
chrome
RickeyBoy4 天前
iOS 图片取色完全指南:从像素格式到工程实践
ios
aiopencode4 天前
使用 Ipa Guard 命令行版本将 IPA 混淆接入自动化流程
后端·ios