一加6T OpenHarmony 基于开源移植仓库编译成功刷入 原创 精华

westinyang
发布于 2023-3-17 03:49
浏览
2收藏

关于作者:I’m westinyang

演示视频:https://www.bilibili.com/video/BV12P411Z7HB

最近 小米6@Diemit一加6T@AlgoIdeas一加6T@Wathinst 的OpenHarmony移植,可以说是振奋人心,不禁感慨到OH终于有廉价的开发设备可用了,我一直是比较关注OpenHarmony的发展和应用开发的相关技术,虽然对系统设备开发并不了解,但还是想着渐进式的尝试和学习下:

  1. 搭建编译环境编译官方rk3568(已完成)
  2. 基于Wathinst的开源移植仓库,编译一加6T的OH系统,熟悉过程解锁一些知识盲区(已完成)
  3. 尝试移植其他更廉价的安卓设备(待完成)
  4. 除此之外,我还会在我的 开源组织 ohos-dev 提交我个人学习开发的应用和相关工具

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

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

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

0 设备和源码信息概述

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

1 环境搭建和获取源码

  • 官方文档,看这个就OK
  • 我是用虚拟机跑的Ubuntu18.04,分配的8c16g,官方rk3568首次编译实测耗时85分钟
  • 关于环境搭建官方提供了3种,IDE、安装包、Docker,我用的第2种方式

2 加入开源移植仓库并同步

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

  • .repo/manifests/chipsets/all.xml 追加 <include name="chipsets/oneplus/fajita.xml" />
  • 新增 .repo/manifests/chipsets/oneplus/fajita.xml
    <?xml version="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" revision="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 sync
    repo forall -c 'git lfs pull'
    ./build.sh --product-name fajita
    
  • 编译成功输出目录 ~/ohos/out/fajita/packages/phone/images

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

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.cpp
HILOG_INFO("%{public}s formId:%{public}lld", __func__, (long long) formRecord.formId);	// @errfix 2
HILOG_INFO("%{public}s formId:%{public}lld", __func__, (long long) formRecord.formId);	// @errfix 3

4 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.gn

window_manager_dayu210_resource_config = true # line 16,修改为false
install_enable = false # line 44,display_manager_config下面的最后一个else中的改为true

5 编译内核和打包boot.img

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

6 刷机指南

持续关注

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2024-1-17 23:58:09修改
4
收藏 2
回复
举报
5条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

期待鸿蒙未来能跑在更多的手机上

回复
2023-3-17 10:17:34
Whyalone
Whyalone

赞,希望越来越多大佬参与进来

回复
2023-3-17 10:34:51
喝一大口可乐
喝一大口可乐

真弄到了一加6T,厉害

回复
2023-3-17 14:27:22
FlashinMiami
FlashinMiami 回复了 喝一大口可乐
真弄到了一加6T,厉害

能刷成功才算厉害

回复
2023-3-17 15:35:04
qq59eff32a78947
qq59eff32a78947

学习学习 

回复
2023-4-1 21:34:33
回复
    相关推荐