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模式,点击执行开始烧写,如图:

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

相关推荐
冬天vs不冷44 分钟前
Linux用户与权限管理详解
linux·运维·chrome
恋猫de小郭13 小时前
什么?Flutter 可能会被 SwiftUI/ArkUI 化?全新的 Flutter Roadmap
flutter·ios·swiftui
网安墨雨17 小时前
iOS应用网络安全之HTTPS
web安全·ios·https
福大大架构师每日一题19 小时前
37.1 prometheus管理接口源码讲解
ios·iphone·prometheus
SimonLiu00919 小时前
[AI]30分钟用cursor开发一个chrome插件
chrome·ai·ai编程
守城小轩1 天前
Chromium GN目标指南 - 查看GN目标(三)
chrome·chrome devtools·指纹浏览器·浏览器开发
守城小轩1 天前
Chromium CDP 开发(八):测试自定义的CDP指令
chrome·chrome devtools·指纹浏览器·浏览器开发
BangRaJun2 天前
LNCollectionView-替换幂率流体
算法·ios·设计
刘小哈哈哈2 天前
iOS 多个输入框弹出键盘处理
macos·ios·cocoa
靴子学长2 天前
iOS + watchOS Tourism App(含源码可简单复现)
mysql·ios·swiftui