一、应用开发注释
首先这里要说一句。因为它自带的系统本身就是最新版,而且没啥瑕疵。所以编译鸿蒙不是必须条件。同时如果你未来界面需求特别简单,且有足够时间学习,那么你可以使用快捷开发。否则老老实实正经开发。因为鸿蒙快捷开发用起来也需要很多的学习。
二、编译
(一)环境准备
首先,它官方文档肯定是基于自己系统写的。因此它给出的依赖列表补全。如果你是用docker这种纯净环境编译,会面临报错问题。需要安装更多的库。
注意,这么多库一起安装它老会出幺蛾子,那么就一行一行安装。尤其是jdk,其他安装完了最后安装它。不然鬼知道出多少幺蛾子。这事卡了好几天好几台电脑。结果最后发现分段安装立刻就好了。
apt update && apt install -y binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 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 libtinfo5 npm libxt-dev libx11-dev xorg-dev liblz4-tool dwarves genext2fs u-boot-tools mtools mtd-utils scons gcc-arm-none-eabi gcc-arm-linux-gnueabi default-jdk wget vim
(二)环境配置
1.首先需要配置一些加速
apt:
注意,apt配置分为换源和添加https防劫持。但是,这俩不要一次性昨晚。否则他会有证书问题。先更新apt源,然后update,之后再更换https。
cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
apt update
sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
apt update
npm:
npm就没那么多事
vim ~/.npmrc
registry=https://npmreg.proxy.ustclug.org/
node:
node有点麻烦,它没有配置文件。需要在/etc/profile
中添加环境变量。而docker更特殊,它不运行profile。而是要在~/.bashrc
里添加
export NVM_NODEJS_ORG_MIRROR=https:
export NODE_MIRROR=https:
pip:
这个是所有里面最简单的
pip install -i https://mirrors.ustc.edu.cn/pypi/web/simple pip -U
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple
(三)开始编译
直接去飞腾的地址按部就班做就行。但是因为适配问题。可以每次后退一个版本。毕竟4.0编译太难了。
同时repo拉取鸿蒙源码的时候,飞腾派官方给了一个分支。但是其实官方给了俩。二选一就行。然而飞腾派选的这个有的资源好像变动了,直接选官方给的第一个就行。如果分支二从标签获取源码能走通,还是走打包版本比较好。找问题好找
参照如下地址的源码获取部分文档
https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v4.0-release.md
分支一:
repo init -u https:
分支二:
repo init -u https:
这部分会因为网络问题而报地址问题:
上面这部分其实分支二,也就是打包标签的部分,如果直接下载它有时候会报application_app_sample找不到。其实就是网卡了找不到,重试两次他就成功了。我一开始以为是地址有问题。结果又一次突然过了。后来发现还是网络问题。
如果编译出错,原因可能是多方面的。首先对一个docker的纯净系统来说,的确需要增加许多的官方提到的以外的库。第二呢,是要主要编译系统的干净和版本。
第一, 首先npm和pip一定要更新到最新版本。这俩东西虽然你用的都是旧库,但是你不更新它就总给你出幺蛾子。
第二, 要注意它开始安装的时候是否成功安装了ohpm。如果编译过程中它报找不到,那一定是过不去的。它正常会在刚开始的阶段输出一个它的版本号。注意观察就行,因为他后面的phpm要卡一会,一般来说不会闪过去的。
(四)分享一下docker启动参数
docker run -dit --name OpenHarmony -v E:\Docker\workspace\OpenHarmony:/workspace -e WORK_SPACE=/workspace -e PROJ_ROOT=/workspace/OpenHarmony -e PHY_DEV=/workspace/phytium_device ubuntu:focal-20231128
但是,我还是建议在裸机服务器里编译,不然鬼知道出多少问题
三、开发问题
本来这期打算把编译坑都说完。但是发现根本踩不完。所以就加点关于开发的问题。
(一)汉化问题
很多人以为DevEco是没有汉化的。因为搜不到插件。但是实际上点开已安装里能看到汉化插件是随着软件一起发布安装的。只是没发布到官方库。而且默认是不开启的。不知道为啥默认不开。
(二)调试日志
开发调试不管什么类型的日志,都是通过hilog方式呈现的。它肯定不会打印在控制台,而是打印在hilog组件里。而ide里面自然能自己接受hilog。
而我们过滤它的主要依据就四个。首先正则字符串匹配就不说了,这个肯定有。
最常用的是通过日志里面两个自定义字符串,domain和tag。这俩在日志里可以自己写,且几乎没啥限制。它会在日志里以domain/tag的方式打印出来。
然后第二常用的是日志级别,因为是下拉菜单且很常见就不细说了。
过滤中的pid我还没试过,应该是线程号。
(三)基本架构
鸿蒙开发和vue是一套风格。同时它以Row和Column()作为开发的响应式框架的根本。相信从jq何bootstrap前端来的都懂这个。不知道的建议去试试,因为bootstrap的原生js开发比基于ts的vue式开发。
这不是针对鸿蒙开发框架,而是高效的基于处理器的双向绑定框架都是这个德行。对逻辑和功能友好,但是对新手很不友好。然而一旦熟悉这套流程,开发效率要比传统直接开发高效的多的多。
(四)关于SD卡用户空间
目前这部分其实已经做完了。但是一直没空整理资料。回头单独发。
这里也是要做个求助,正常SD卡用fdisk和resize2fs能够扩容到整个卡。但是鸿蒙默认不带fdisk,我就不知道怎么办了。
如果你是从烧录开始的,那么这事好说。按照正常手动刷写流程,给每个分区大点空间就行。
这里要注意一件事情,正常运行,虽然测试还不够,但是发现基本上数据全都扩展进入了userdata这个分区。而且这个分区初始是空的,启动系统才会填进去东西。所以估计清空手机系统就是彻底删了这个区的数据。
而且你以后的数据都是往这里塞。所以绝大多数空间都要给这个分区。甚至我建议其他都按照他默认写卡的1-2G空间就够了。剩下的都给这个空间比较好。