使用Python开发鸿蒙设备程序(0-初体验)
到目前为止,鸿蒙设备开发的“官方指定语言”还是C语言!
这看起来是一件正常的事,毕竟鸿蒙设备开发还是属于嵌入式开发的范畴,而在嵌入式开发中C语言又是当之无愧的首选,所以,大家也都接受了这个现实。。。。。。。
上周末,有幸能和华为的大佬们进行面对面交流(其实我是去抱大腿的),我们都一致认为:如果设备开发能支持更简洁的开发方式(如:简单的语言,简单的开发环境),相信会有更多的开发者加入。。。
那么现在,有没有一种语言,受众面很广又简单易学呢?
当然是有的,相信你已经知道了,就是 Python !

这几年 Python 借助 AI 的兴起而进入大众视野,她的简单易学深受欢迎,很多小学生都能够用她来编程了。
所以,一个看起来很疯狂的想法从我大脑蹦了出来:如果鸿蒙设备开发可以用 Python ,那么肯定能降低学习门槛,吸引更多的开发者。。。
于是,说干就干。。。
我先调研了目前的各种Python实现(Python是开源的,可以通过源码了解实现),发现公版 Python 和 MicroPython 都可以是我的起点(baseline),毕竟我没有必要照着 Python 规范写一个解释器出来!然而,困难还是有的,这两种实现都有非常多的依赖,而且设计目标又分别不同:公版 Python 是一个大而全的系统(解释器,库,等等),目标是只要资源丰富爱怎么玩就怎么玩;MicroPython 从公版 Python 剪裁而来,并做了扩展,基本定义成了一个微型嵌入式设备上的操作系统。
那么,怎么开始呢,做选择真的很难啊!!!!
我开始整理思路,我想干什么?!之后有了下面的架构图。

很显然,我想的是提供鸿蒙设备开发的其它方式,而不是用 Python 替换 C 语言!所以,我的第一个里程碑(milestone)是获得一个可以在鸿蒙设备(Hi3861)上运行的 Python 解释器!有了这个 Python 解释器,接下来就是设计 Python 版的鸿蒙系统开发接口了。。。
确定了目标之后,接下来的问题就是:究竟是用公版 Python 开刀还是用 MicroPython 开刀?
通过两者代码的对比阅读,我发现 MicroPython 居然在解释器部分对公版 Python 也做了剪裁。。。这,为什么啊??? 我暂时也没有确切答案,不过从代码实现可以看出 MicroPython 是为了适配更多低配置的硬件而做了取舍!那显然,很多东西人家都考虑过了!我想着目前鸿蒙设备的定位也是低配硬件,那么用 MicroPython 开刀看起来更合适。
=========== 华丽的分割线 Begin ===========
通过 2 天的手术的改造,能够运行的版本(DTPython)就有了!!
使用方式如下:
下载文末附件中的 libdtpython.a,并将其拷贝到 \code-1.0\vendor\hisi\hi3861\hi3861\build\libs 目录下,如图:

【可选】编写 Python 代码(目前未提供任何库支持),并使用文末附件中的 Txt2Str 工具将其转换为 C 字符串,用法如下:

说明:
Txt2Str 将 Python 代码用 C 字符串的形式存储到 C 文件中(如上图中的 test.c)
将转换得到的 C 文件加入工程中即可在 C 代码中使用 Python 代码(可参考文末附件中的示例)
注意:目前还没有简单的方法直接将 Python 源文件烧写到设备中,因此才需要上述步骤。
在设备开发中使用 Python 代码,示例如下:

运行结果如下:

=========== 华丽的分割线 End ===========
后记:
目前仅仅能够运行基本的 Python 代码,大概率还存在很多需要解决的问题。
希望大家都来试玩我的这个方案,多找Bug,多提Issue。
现阶段的代码乱一坨,实在不好意思拿出来丢人现眼,基本功能稍微稳定些,直接开源!!!
Enjoy It !
作者:唐佐林
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://harmonyos.51cto.com
使用Python开发鸿蒙设备程序(0-初体验)的更多相关文章
- Taro开发微信小程序的初体验
了解Taro 听说Taro是从几个星期前开始的,在一次饭桌上,一个小伙伴说:"Hey, 你听说了Taro么,听说只需要写一套程序就可以生成H5,小程序以及RN的代码模板,并且类似于React ...
- #2020征文-开发板#使用Python开发鸿蒙应用--2021.01.07直播图文
写在前面: 每年的过年前夕,手中的项目一定会告急...而自己又缺乏三头六臂七十二变等特技,所以只能在鸿蒙社区先消失一阵子了.今天再看社区的帖子,发现大家的进步可不一般,各种案例示例层出不穷,一片欣欣向 ...
- Linux内核驱动学习(三)字符型设备驱动之初体验
Linux字符型设备驱动之初体验 文章目录 Linux字符型设备驱动之初体验 前言 框架 字符型设备 程序实现 cdev kobj owner file_operations dev_t 设备注册过程 ...
- IoT设备程序开发及编译环境搭建初体验
引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...
- MySQL8.0初体验
MySQL8.0的官方社区开源版出来有段时间了,而percona的8.0版本还没有正式对外发布(已发布测试版),一直以来也没安装体验下这个号称质的飞跃的版本,今天正好有些时间就下了安装体验体验. 一. ...
- 用python开发简单ftp程序
根据alex老师视频开发的简单ftp程序,只能实现简单的get功能 ftp客户端程序: #!/usr/bin/env python #_*_ coding:utf-8 _*_ import socke ...
- elipse+pydev+python开发arcgis脚本程序
环境配置参考:http://www.cnblogs.com/halfacre/archive/2012/07/22/2603848.html 添加arcpy类库.arctoolbox.arcgis-b ...
- 2020年python开发微信小程序,公众号,手机购物商城APP
2020年最新的技术全栈,手机短信注册登陆等运用, 精准定位用户 支付宝支付 以及前后端从0到大神的全部精解 2020年最新的技术全栈,手机短信注册登陆等运用, 精准定位用户 支付宝支付 以及前后端从 ...
- Android百度地图开发(一)之初体验
转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42614603 做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需 ...
随机推荐
- 源码都没调试过,怎么能说熟悉 redis 呢?
一:背景 1. 讲故事 记得在很久之前给初学的朋友们录制 redis 视频课程,当时结合了不少源码进行解读,自以为讲的还算可以,但还是有一个非常核心的点没被分享到,那就是源码级调试, 对,读源码还远远 ...
- Filebeat 根据不同的日志设置不同的索引
平时在物理机上使用 Filebeat 收集日志时,会编写多个 filebeat 配置文件然后启动多个 filebeat 进程来收集不同路径下的日志并设置相对应的索引.那么如果将所有的日志路径都写到一个 ...
- OpenCV计算机视觉学习(9)——图像直方图 & 直方图均衡化
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1, ...
- re模块,判断某行/某字符是否存在
import re ##判断行是否存在def get_need_line(): ## 获取有用信息行 with open('task.log',mode="r") as f: fo ...
- Linux 系统编程 学习:00-有关概念
Linux 系统编程 学习:00-有关概念 背景 系统编程其实就是利用系统中被支持的调度API进行开发的一个过程. 从这一讲开始,我们来介绍有关Linux 系统编程的学习. 知识 在进行Linux系统 ...
- Scrapy加Redis加IP代理池实现音乐爬虫
音乐爬虫 关注公众号"轻松学编程"了解更多. 目的:爬取歌名,歌手,歌词,歌曲url. 一.创建爬虫项目 创建一个文件夹,进入文件夹,打开cmd窗口,输入: scrapy star ...
- 【USACO】New Years Party
题意描述 New Years Party \(N(3\leq N\leq 200)\) 头奶牛举办新年聚会.每头奶牛会做几种不同的佳肴(以"碟"记数). 一共有 \(D(5\leq ...
- python开发基础(二)-运算符以及数据类型
##运算符 算数运算符: ---> 赋值运算符 >>>返回结果为值 + # 加 - # 减 * # 乘 / # 除以 ** # 幂运算 % # 取余数 // # 取商 #### ...
- 【Kata Daily 190918】Spacify(插空)
题目: Modify the spacify function so that it returns the given string with spaces insertedbetween each ...
- H264音视频直播系统 服务器端+客户端源码 可用于直播系统搭建
RTP协议实现直播系统搭建,采用H.264和AAC编码,码率极低,同时有较高的视频清晰度和音频音质,可用于视频聊天.视频会议.摄像头监控等多种应用场景. 直播系统搭建发布端,选择视频和音频设备,指定服 ...