作者:westinyang
最近小米 6 和一加 6T 的 OpenHarmony 移植,可以说是振奋人心,不禁感慨到 OH 终于有廉价的开发设备可用了。
我一直是比较关注 OpenHarmony 的发展和应用开发的相关技术,虽然对系统设备开发并不了解,但还是想着渐进式的尝试和学习下。
①搭建编译环境编译官方 rk3568(已完成)。
②基于 Wathinst 的开源移植仓库,编译一加 6T 的 OH 系统,熟悉过程解锁一些知识盲区(已完成)。
https://gitee.com/wathinst
③尝试移植其他更廉价的安卓设备(待完成)。
④除此之外,我还会在我的“开源组织 ohos-dev”提交我个人学习开发的应用和相关工具。
https://gitee.com/ohos-dev
编译所使用的一加 6T 开源移植仓库是由 @Wathinst 完成的。非常感谢 @Wathinst 的耐心指点,我才能顺利编译成功。
https://gitee.com/wathinst
最终效果如下:
个人认为,这篇笔记更适合以下人群阅读(其实就是我 [手动狗头]):
- 缺乏系统移植经验或者没有
- 想基于现有的开源移植仓编译 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/
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除