HarmonyOS入门及编译

921 阅读2分钟

三天前,华为正式开源了鸿蒙OS的部分仓库,同时发布了三款开发板。今天带大家一起了解一下鸿蒙系统开发环境的配置和三款开发板ROM的编译。

鸿蒙OS Device官方网站https://device.harmonyos.com/cn/home/。今天分享的内容主要来自根据这个网站配置开发环境和编译的过程中遇到的问题,以及解决方法。记录分享出来,希望对大家有一点点帮助。

我用的环境是HUAWEI Matebook + Windows10 + Windows子系统Ubuntu18.04。

环境搭建和编译过程中遇到的问题及解决方法

安装python工具缺少ssl

$ pip3 install setuptools
Defaulting to user installation because normal site-packages is not writeable
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Requirement already satisfied: setuptools in /usr/local/lib/python3.8/site-packages (47.1.0)
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

解决方法

关键错误信息the ssl module in Python is not available,这是由于Ubuntu默认安装时没有包括SSL相关的library。解决方案如下:

$ sudo apt-get install python-dev libffi-dev libssl-dev

另外也可以把下面的library一起安装了
$ sudo apt-get install libxml2-dev libxslt-dev libmysqlclient-dev libsqlite3-dev zlib1g-dev

pip升级包下载超时

$ sudo pip3 install --upgrade pip
  Downloading pip-20.2.3-py2.py3-none-any.whl (1.5 MB)
     |███▊                            | 174 kB 2.2 kB/s eta 0:09:52ERROR: Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/pip/_vendor/urllib3/response.py", line 425, in _error_catcher
    yield
  File "/usr/local/lib/python3.8/site-packages/pip/_vendor/urllib3/response.py", line 507, in read
    data = self._fp.read(amt) if not fp_closed else b""
  File "/usr/local/lib/python3.8/site-packages/pip/_vendor/cachecontrol/filewrapper.py", line 62, in read
    data = self.__fp.read(amt)
  File "/usr/local/lib/python3.8/http/client.py", line 458, in read
    n = self.readinto(b)
  File "/usr/local/lib/python3.8/http/client.py", line 502, in readinto
    n = self.fp.readinto(b)
  File "/usr/local/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
  File "/usr/local/lib/python3.8/ssl.py", line 1241, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/local/lib/python3.8/ssl.py", line 1099, in read
    return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

解决方法

因为pip默认源与下载者的连接不好导致,可以通过更换国内的源解决,比如豆瓣、清华等。换源有两种方式:临时和永久。

临时换源(示例为清华源)
$ sudo pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple

永久换源
linux下,修改 ~/.pip/pip.conf (没有就创建一个), 修改 index-url至tuna,内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

编译Hi3861成功后,编译Hi3516/3518失败

$ python build.py ipcamera_hi3518ev300 -b debug
Error: Can't find compiler clang, install it please.
usage:
  python build.py ipcamera_hi3516dv300
  python build.py ipcamera_hi3518ev300
  python build.py wifiiot

解决方法

Hi3861/3518/3516三个开发板用的是同一包code,但是使用到的编译工具不一样。示例中的错误是没有安装Hi3518的编译工具,按照Hi3518的搭建环境指引安装一下llvm/hc-gen/dosfstools/mtools即可编译过。

$ sudo apt-get install dosfstools
$ sudo apt-get install mtools
$ llvm和hc-gen按照指引下载、解压、加入PATH

编译Hi3516/3518会卡一会儿

编译Hi3516/3518的时候会在某个位置卡一会儿(电脑配置不给力),请耐心等待。

总结

HarmonyOS Device网站的文档还是比较完善的。liteOS的编译也很简单,都只有一条命令。开发环境配置还算简单,不会给开发者带来困扰。因为没有实体开发板,所以烧录运行部分就略过了。

后面会持续分享HarmonyOS的学习心得,希望可以为中国的开源事业尽绵薄之力。