OpenHarmony 源码下载和编译

OpenHarmony 源码下载和编译

欢迎入群讨论

在这里插入图片描述

相关文档

https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v4.1-beta1.md

源码下载

分支:OpenHarmony-v4.1-beta1

  1. 注册码云gitee账号

  2. 注册码云SSH公钥

  3. 安装git客户端git-lfs并配置用户信息

    git config --global user.name "yourname"
    git config --global user.email "your-email-address"
    git config --global credential.helper store
    
  4. 安装码云repo工具

    curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > 	/usr/local/bin/repo 
    pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
    
通过repo获取

方式一(推荐)

通过repo + ssh 下载(需注册公钥)

  • 从版本分支获取源码。可获取该版本分支的最新源码,包括版本发布后在该分支的合入。

    repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-4.1-Beta1 --no-repo-verify
    repo sync -c
    repo forall -c 'git lfs pull'
    
  • 从版本发布Tag节点获取源码。可获取与版本发布时完全一致的源码。

    repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v4.1-Beta1 --no-repo-verify
    repo sync -c
    repo forall -c 'git lfs pull'
    

方式二

通过repo + https 下载。

  • 从版本分支获取源码。可获取该版本分支的最新源码,包括版本发布后在该分支的合入。

    repo init -u https://gitee.com/openharmony/manifest -b OpenHarmony-4.1-Beta1 --no-repo-verify
    repo sync -c
    repo forall -c 'git lfs pull'
    
  • 从版本发布Tag节点获取源码。可获取与版本发布时完全一致的源码。

    repo init -u https://gitee.com/openharmony/manifest -b refs/tags/OpenHarmony-v4.1-Beta1 --no-repo-verify
    repo sync -c
    repo forall -c 'git lfs pull'
    
从镜像站点获取

https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F4.1-Beta1%2Fcode-v4.1-Beta1.tar.gz

编译系统

环境搭建
  • 以上安装命令适用于Ubuntu18.04,其他版本请根据安装包名称采用对应的安装命令。其中:
    • Python要求安装Python 3.8及以上版本,此处以Python 3.8为例。
    • Java要求java8及以上版本,此处以java8为例。
  • 若您使用的是Ubuntu20及以上版本,由于gcc-multilib和gcc-arm-linux-gnueabi互斥,请勿安装gcc-arm-linux-gnueabi。
sudo apt-get update && sudo apt-get 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 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 genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre 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 libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev

将Python 3.8设置为默认Python版本。

查看Python 3.8的位置:

which python3.8

将Python和Python3切换为Python 3.8:

sudo update-alternatives --install /usr/bin/python python {Python 3.8 路径} 1    #{Python 3.8 路径}为上一步查看的Python 3.8的位置
sudo update-alternatives --install /usr/bin/python3 python3 {Python 3.8 路径} 1   #{Python 3.8 路径}为上一步查看的Python 3.8的位置
安装依赖

源码根目录下执行prebuilts脚本,安装编译器及二进制工具:

build/prebuilts_download.sh

编译方式

编译有两种方式,使用hb或者build.sh

hb

hb set

在这里插入图片描述

hb build

在这里插入图片描述

hb build --product-name rk3568

hb clean

清除out 目录对应产品的编译产物

hb env

查看当前设置信息

默认情况下,编译的是32位系统,如需编译为64位系统,hb build --target-cpu arm64
build.sh(推荐)
./build.sh --product-name {product_name} --ccache
./build.sh --product-name rk3568 --ccache
编译64位的版本
./build.sh --product-name rk3568 --ccache --target-cpu=arm64
编译debug版本
./build.sh --product-name {product_name} --gn-args is_debug=true

添加 --ccache 参数:

ccache会缓存c/c++编译的编译输出,下一次在编译输入不变的情况下,直接复用缓存的产物。用来缓存编译过的.o文件等

-h, --help                                        # 显示帮助信息并退出
--source-root-dir=SOURCE_ROOT_DIR                 # 指定路径
--product-name=PRODUCT_NAME                       # 指定产品名
--device-name=DEVICE_NAME                         # 指定装置名称
--target-cpu=TARGET_CPU                           # 指定CPU
--target-os=TARGET_OS                             # 指定操作系统
-T BUILD_TARGET, --build-target=BUILD_TARGET      # 指定编译目标,可以指定多个
--gn-args=GN_ARGS                                 # GN参数,支持指定多个
--ninja-args=NINJA_ARGS                           # Ninja参数,支持指定多个
-v, --verbose                                     # 生成时显示所有命令行
--keep-ninja-going                                # 让Ninja持续到1000000个工作失败
--jobs=JOBS
--export-para=EXPORT_PARA
--build-only-gn                                   # 只做GN解析,不运行Ninja
--ccache                                          # 可选  如果使用ccache,需要本地安装ccache
--fast-rebuild                                    # 快速重建,默认值为False
--log-level=LOG_LEVEL                             # 指定编译期间的日志级别','三个级别可选:debug, info and error,default='info'
--device-type=DEVICE_TYPE                         # 指定设备类型,默认值为'default'
--build-variant=BUILD_VARIANT                     # 指定设备操作模式,默认值为'user'

编译成功

在这里插入图片描述

路径:out/rk3568/packages/phone/images

源码编译full-SDK

编译windows:./build.sh --product-name ohos-sdk
编译mac:./build.sh --product-name ohos-sdk --gn-args full_mini_debug=false --keep-ninja-going --gn-args=is_use_check_deps=false

路径:out/sdk/packages/ohos-sdk/

替换full-SDK

public-SDK是提供给应用开发的工具包,跟随DevEco Studio下载,不包含系统应用所需要的高权限API

full-SDK是提供给OEM厂商开发应用的工具包,不能随DevEco Studio下载。

docker容器

分支:OpenHarmony-v4.1-beta1

docker pull yin13753884368/harmony:openharmony4.1

分支:OpenHarmony-4.0-Release

docker pull yin13753884368/harmony:openharmony4.0

微信公众号(他晓),关注并转发,谢谢

效果图
  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值