一加6T成功刷入OpenHarmony

发布一下 1 0

作者:westinyang

最近小米 6 和一加 6T 的 OpenHarmony 移植,可以说是振奋人心,不禁感慨到 OH 终于有廉价的开发设备可用了。

一加6T成功刷入OpenHarmony

我一直是比较关注 OpenHarmony 的发展和应用开发的相关技术,虽然对系统设备开发并不了解,但还是想着渐进式的尝试和学习下。

①搭建编译环境编译官方 rk3568(已完成)。

②基于 Wathinst 的开源移植仓库,编译一加 6T 的 OH 系统,熟悉过程解锁一些知识盲区(已完成)。

https://gitee.com/wathinst

③尝试移植其他更廉价的安卓设备(待完成)。

④除此之外,我还会在我的“开源组织 ohos-dev”提交我个人学习开发的应用和相关工具。

https://gitee.com/ohos-dev

编译所使用的一加 6T 开源移植仓库是由 @Wathinst 完成的。非常感谢 @Wathinst 的耐心指点,我才能顺利编译成功。

https://gitee.com/wathinst

最终效果如下:

一加6T成功刷入OpenHarmony

一加6T成功刷入OpenHarmony

个人认为,这篇笔记更适合以下人群阅读(其实就是我 [手动狗头]):

  • 缺乏系统移植经验或者没有
  • 想基于现有的开源移植仓编译 OpenHarmony 作为学习的开端
  • 尽快用上设备做应用开发真机调试,为 OpenHarmony 应用生态做贡献

设备和源码信息概述

如下:

  • OnePlus 6T (fajita)
  • OpenHarmony master 分支 2023-03-15

环境搭建和获取源码

官方文档,看这个就 OK:

https://docs.openharmony.cn/pages/v3.2Beta/zh-cn/device-dev/quick-start/quickstart-pkg-prepare.md/

我是用虚拟机跑的 Ubuntu18.04,分配的 8c16g,官方 rk3568 首次编译实测耗时 85 分钟。

关于环境搭建官方提供了 3 种,IDE、安装包、Docker,我用的第 2 种方式。

加入开源移植仓库并同步

作者:https://gitee.com/wathinst组织:https://gitee.com/ohos_port @Wathinst移植的一加6T开源仓库

.repo/manifestsipsets/all.xml 追加:

<include name="chipsets/oneplus/fajita.xml" />

新增:

.repo/manifestsipsets/oneplus/fajita.xml
<?xml versinotallow="1.0" encoding="UTF-8"?><manifest><remote fetch="https://gitee.com/ohos_port/" name="ohos_port" review="https://gitee.com/ohos_port/"/><!-- <default remote="ohos_port" revisinotallow="master" sync-j="4" /> --><project name="device_board_oneplus" path="device/board/oneplus" remote="ohos_port" revision="master"/><project name="device_soc_qualcomm" path="device/soc/qualcomm" remote="ohos_port" revision="master"/><project name="vendor_oneplus" path="vendor/oneplus" remote="ohos_port" revision="master"/></manifest>

再次同步源码和编译:

repo syncrepo forall -c 'git lfs pull'./build.sh --product-name fajita

编译成功输出目录:

~/ohos/out/fajita/packages/phone/images

修复编译中出现的代码错误

master 分支问题会多一些,编译期间根据错误日志不断分析修正,直至成功(Release 应该没什么问题的)。

# err1,2: 作者已经修正,https://gitee.com/ohos_port/device_board_oneplus/issues/I6ND82# err3: third_party/libdrm/tests/util/pattern.c// void *mem_base = mem;    // @errfix 1# err4,5: foundation/ability/form_fwk/services/src/form_event_util.cppHILOG_INFO("%{public}s formId:%{public}lld", __func__, (long long) formRecord.formId);    // @errfix 2HILOG_INFO("%{public}s formId:%{public}lld", __func__, (long long) formRecord.formId);    // @errfix 3

OH 源码和开源移植的修改记录

fstab 调整:

# device/board/oneplus/fajita/cfg/fstab.fajita# /dev/block/sda18 修改为 /dev/block/sda17,因为一加6T的data分区就在这里,原作者新增分区做双系统,才这么配置的# fstab file.#<src>                                                  <mnt_point> <type>    <mnt_flags and options>                              <fs_mgr_flags>/dev/block/sda14             /usr       ext4     ro,barrier=1  wait,required/dev/block/sde44             /vendor    ext4     ro,barrier=1  wait,required/dev/block/sda18             /data      ext4     nosuid,nodev,noatime,barrier=1,data=ordered,noauto_da_alloc wait,reservedsize=104857600/dev/block/sda3              /misc      none     none  wait,required

DPI 修正:

# foundation/window/window_manager/resources/config/BUILD.gnwindow_manager_dayu210_resource_config = true # line 16,修改为falseinstall_enable = false # line 44,display_manager_config下面的最后一个else中的改为true

编译内核和打包 boot.img

sudo apt install abootimgmkdir ~/oneplus & cd oneplusgit clone https://gitee.com/ohos_port/linux-sdm845-6.2cd linux-sdm845-6.2./make_sdm845.sh./make_bootimg.sh # 我把boot.img输出目录INSTALL_DIR改为了/home/ubuntu/

版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

本文地址:http://0561fc.cn/205202.html