前言
通过【软通动力鸿湖万联扬帆系列“竞”开发板试用体验】认识"竞"笔者带大家认识了扬帆系列“竞”开发板,本节将讲解OpenHarmony源码编译环境搭建以及将编译OpenHarmony标准系统烧录到“竞”开发板。
OpenHarmony标准系统位开发者提供了两种源码编译、烧录的方式:
- IDE方式:完全采用IDE(DevEco Device Tool)进行一站式开发,编译依赖工具的安装及编译、烧录、运行都通过IDE进行操作。
- 安装包方式:通过命令进行编译依赖工具的下载安装,编译操作也通过命令实现。
笔者更喜欢使用第二种安装包方式,但本文中笔者使用Ubuntu+瑞芯微开发工具的方式进行源码编译及烧录。
1 安装VMware Workstation Player
VMware Workstation Player(以下简称VM Player)是一款桌面虚拟化应用,可以在当前计算机上运行一个或多个其他操作系统,在后面小节中编译OpenHarmony源代码需要使用Ubuntu操作系统,因而小节会带读者安装VM Player。当然读者也可以选择其他的虚拟化应用程序,如需要授权的VMware Workstation Pro,或者Virtual Box,甚至读者还可以使用云虚拟机。
1.1 下载VM Player
在浏览器中打开VM Player下载地址,展开左侧菜单栏下的工作空间,点击桌面Hypervisor菜单,右侧内容区定位到具体的模块,点击Workstation Player卡片进入到下载界面,如图1-1所示。
点击页面中的“免费下载”按钮,等待下载完成,如图1-2所示。
1.2 安装VM Player
下载完成后,读者会在下载存储路径文件夹中得到VM Player安装包,如VMware-player-full-xxx.exe文件,然后双击安装包,打开安装向导,如图1-3所示。
点击安装向导界面中“下一步”按钮,打开VMware最终用户许可协议,勾选“我接受许可协议中的条款” (感兴趣的话也可以读一读) ,如图1-4所示。
接着点击“下一步”按钮,进入到VM Player安装路径设置界面,如图1-5所示。点击“更改”按钮设置VM Player安装位置,建议安装到除C盘之外的其他磁盘中,若只有一个磁盘,则忽略,如图1-6所示。
更改完路径后,点击“确定”按钮回到自定义安装界面,点击“下一步”按钮,进入用户体验设置界面,可默认,也可取消勾选,如图1-7所示。
接着点击“下一步”按钮,进入快捷方式设置界面,勾选桌面和开始菜单程序文件夹,方便打开应用程序,如图1-8所示。
点击“下一步”按钮,进入到VM Player安装界面,点击“安装”按钮进行安装,如图1-9所示。
等待安装完成后,点击“完成”按钮(若个人使用点击“跳转许可”按钮即可),如图1-10所示。
1.3 初次体验VM Player
双击桌面VMware Workstation 16 Player图标,打开VM Player应用程序,如图1-11所示。
由于开发板需要连接到主机上,所以此处做额外的设置,点击菜单栏Player,选择文件选项下的首选项,在USB列表中勾选“将设备连接到主机”,如图1-12所示。
2 准备Ubuntu 20.04 系统镜像包
Ubuntu是一个以桌面为主的Linux操作系统,是编译OpenHarmony源代码必要的环境之一,打开官网下载链接下载Ubuntu 20.04桌面版(64位),如图2-1所示。
注:由于下载的文件格式为.torrent,因此需要使用迅雷下载完整的ISO文件,当然读者也可以使用国内镜像网站下载Ubuntu 20.04。
3 创建名为OpenHarmony虚拟机并安装Ubuntu操作系统
1、2小节准备了OpenHarmony源代码编译所需的虚拟机和Ubuntu操作系统镜像包,本节将带读者创建名为OpenHarmony的虚拟机并安装Ubuntu操作系统。
3.1 创建名为OpenHarmony虚拟机
点击VM Player欢迎页中的创建新虚拟机,打开新建虚拟机向导,勾选“稍后安装操作系统”,如图3-1所示。
点击“下一步”按钮,打开选择客户机操作系统界面,客户操作系统选择Linux,版本选择Ubuntu 64位,如图3-2所示。
点击“下一步”按钮,打开命名虚拟机界面,设置虚拟机名称和虚拟机存储位置,如图3-3所示。
点击“下一步”按钮,打开指定磁盘容量界面,为虚拟机磁盘指定磁盘大小(建议100GB以上),同时选择虚拟磁盘存储方式,如图3-4所示。
点击“下一步”按钮,打开已准备好创建虚拟机界面,该界面中显示当前创建的虚拟机各项配置。点击“完成”按钮,完成虚拟机创建,如图3-5所示。
在VM Player左侧虚拟机管理区,点击OpenHarmony菜单项,切换到名称为OpenHarmony的虚拟机,然后点击“编辑虚拟机设置”,进行虚拟机细项配置,如图3-6所示。
打开虚拟机设置界面默认硬件选项卡,首先设置虚拟机内存大小,建议读者设置为8G以上,然后点击“确定”按钮应用配置,如图3-7所示。
接着在硬件选项卡中,点击CD/DVD(SATA)细项配置Ubuntu镜像路径,如图3-8所示。
屏蔽开发板设备连接主机后虚拟机提示,移除硬件选项卡中的USB控制器,如图3-9所示。
3.2 安装Ubuntu操作系统
3.1小节设置虚拟机各项细项完成后,点击名称为OpenHarmony主界面的播放虚拟机,等待操作系统加载完成,进入安装Ubuntu操作系统安装向导界面,并选择语言,如图3-10所示。
在安装向导界面,有“试用Ubuntu”和“安装Ubuntu”两个按钮选项,为了规避安装时存在部分界面无法全显的问题,这儿选择点击“试用Ubuntu”按钮,进入Ubuntu操作系统桌面后,打开终端,输入xrandr -s 1280x800
设置分辨率。
接着双击Ubuntu桌面“安装Ubuntu 20.04.4 LTS”图标,进入真实安装向导界面,整个安装如图3-11~19所示。
4 准备OpenHarmony源码编译环境
在1~3小节为OpenHarmony源码编译准备好了前置约束条件,本小节将带读者搭建OpenHarmony源码编译环境。在正式开始之前,读者需要先将Ubuntu软件源改为国内镜像地址,打开设置-->关于-->软件更新,在Ubuntu软件页签中,更改软件源,如图4-1所示。
注:更改完成后,打开终端输入sudo apt-get update
和sudo apt-get upgrade
进行同步。
4.1 配置Ubuntu环境
启动上节准备安装好的Ubuntu操作系统虚拟机,打开终端,执行以下命令检查Shell环境是否为bash
,如图4-2所示。
ls -l /bin/sh
如图为dash
,因此执行以下命令进行更改,如图4-3所示。
sudo dpkg-reconfigure dash
注:更改完成后,执行图4-2命令再次检查是否切换成功。
4.2 安装DevEco Device Tool软件包。
- 下载最新的DevEco Studio Tool Linux(64-bit)版本,如图4-4所示。
- 执行以下命令解压下载的devicetool-linux-tool-3.1.0.200.zip,如图4-5所示。
unzip devicetool-linux-tool-3.1.0.200.zip
- 执行命令赋予安装文件可执行权限。
chomd u+x devicetool-linux-tool-3.1.0.200.sh
- 执行以下命令,安装DevEco Device Tool,在用户协议和隐私声明签署界面,选择同意项(使用TAB键切换到“确定”按钮),如图4-6所示。
sudo ./devicetool-linux-tool-3.1.0.200.sh
等待安装完成后,终端界面会显示“DevEco Device Tool successfully installed.”时,则证明安装成功,如图4-7所示。
4.3 获取并编译OpenHarmony源码
OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,其代码是以组件的形式开放,开发者可以通过如下其中一种方式获取:
- 使用
repo
或git
工具从gitee或github中下载,此方法可以获取到最新的代码;
- 通过DevEco Marketplace网站获取;
- 从镜像站点下载发行版压缩文件。
笔者使用第一种方式从gitee中获取OpenHarmony源代码.
- 使用以下命令安装
git
和git-lfs
,如图4-8所示。
sudo apt-get install git git-lfs
- 执行以下命令为git配置用户信息(一定要有自己的码云账号),如图4-9所示。
git config
git config
git config
- 执行以下命令安装码云
repo
工具,如图4-10所示。
curl https:
chmod a+x /usr/local/bin/repo
pip3 install -i https:
注意:若出现Failed to create the file /usr/local/bin/repo: 权限不够
,则在命令行前加sudo
。
注意:若出现Command 'curl' not found, but can be installed with: sudo apt install curl
,则执行命令sudo apt-get install curl
安装curl
插件。
- 获取源码方式有两种,一种使用
repo+ssh
方式,另一种repo+http
方式,笔者使用的是第二种方式,不需要设置公钥。关于OpenHarmony源码可以获取主干代码也可以获取分支代码,前者为最新代码,笔者此处使用的是最新的代码。执行以下命令,获取OpenHarmony主干代码,如图4-11所示。
# 创建一个目录
mkdir -p ~/openharmony/coding && cd $_
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
- 在源码根目录下执行prebuilts脚本,安装编译器及二进制工具,如图4-12所示。
bash build/prebuilts_download.sh
- 打开存储OpenHarmony源码的目录,源码各目录说明如表4-1所示,源码目录如图4-13所示。
表4-1 OpenHarmony源码目录
目录名 |
描述 |
applications |
应用程序样例,包括camera等 |
base |
基础软件服务子系统集&硬件服务子系统集 |
arkcompiler |
方舟编译器运行时组件系统,包括方舟运行时公共组件、JS转方舟字节码组件、方舟JS运行时组件及方舟工具链 |
build |
组件化编译、构建和配置脚本 |
commonlibrary |
提供公用基础库、C++功能函数和类、基础类库API |
developtools |
调试工具模块,包含类Web范式语法编译转换、语法验证、语法报错,性能调优模块,系统能力编解码工具,资源编译工具等 |
device |
开发板和芯片适配源码 |
docs |
说明文档 |
drivers |
驱动子系统 |
foundation |
系统基础能力子系统集 |
interface |
JavaScript API公共仓,存放d.ts声明文件 |
kernel |
内核子系统 |
napi_generator |
NAPI框架生成工具 |
prebuilts |
编译器及工具链子系统 |
productdefine |
产品配置 |
test |
测试子系统 |
third_party |
开源第三方组件 |
utils |
常用的工具集 |
vendor |
厂商提供的软件 |
build.py |
.sh |
qemu-run |
运行QEMU模拟不同的硬件单板脚本文件 |
- 编译OpenHarmony源码
笔者这里使用的是终端命令方式编译,在源码根目录打开终端,输入以下命令进行源码编译,如图4-14所示。
./build.sh --product-name yangfan --ccache
注:由于没有下载部分依赖工具,因此编译时会出现一些问题。缺失依赖工具如图4-15所示,使用以下命令进行安装。
sudo apt-get install default-jdk u-boot-tools mtd-utils scons gcc-arm-none-eabi gcc-arm-linux-gnueabi
安装完依赖工具后,再次执行源码编译命令,等待编译完成,如图4-16所示,出现yangfan build success
和build successful
则表示编译成功。
源码编译后的产物在源代码根目录下out
目录中,如图4-17所示。
注:编译yangfan
源码适用于RK3399芯片,笔者手中的扬帆系列是“竞”开发板,是以RK3568芯片为主的,因此笔者选择重新编译源码使其适用于产品名称为rk3568
,该源码典型应用是润和DAYU200开发板。
4.4 编译生成RK3568芯片镜像
适用于“竞”开发板的源码还未合入OpenHarmony主仓,因此笔者选择编译生成RK3568芯片镜像,使用以下命令重新编译。
./build.sh --product-name rk3568 --ccache
使用命令方式第一次编译源码需要耗费一定的时间,等待编译完成,如图4-18所示。
参照【软通动力鸿湖万联扬帆系列“竞”开发板试用体验】认识"竞"文章第6小结使用瑞芯微将编译后的镜像烧录到“竞”开发板中,编译后的镜像位置源码根目录/out/rk3568/packages/phone/images/
。烧录成功后,启动开发板会出现以下问题:
- 开机动画不是SwanLinkOS;
- DevEco Studio 无法识别设备;
- 开发板息屏导致设备重新启动;
- 界面布局错位。
5 小结
本节对OpenHarmony源码编译环境搭建、源码目录结构、针对性编译做了简单介绍,下章节将对源码进行魔改,以适配“竞”开发板。