社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用Python开发鸿蒙应用!

51CTO技术栈 • 4 年前 • 491 次点击  
送福利啦

关注鸿蒙技术社区,回复【鸿蒙】价值399元的鸿蒙开发板套件(数量有限,先到先得),还可以免费下载鸿蒙入门资料


👇扫码立刻关注👇

专注开源技术,共建鸿蒙生态


每年的过年前夕,手中的项目一定会告急,而自己又缺乏三头六臂七十二变等特技,所以只能在鸿蒙社区先消失一阵子了。


今天再看社区的帖子,发现大家的进步可不一般,各种案例示例层出不穷,一片欣欣向荣的景象!


在这样的氛围下,我又来了分享的欲望,希望自己的一点积累能为鸿蒙宇宙添砖加瓦。


直播主题回顾:

考虑到很多同学可能是新手,这里首先要谈谈交叉编译的概念!


交叉编译是嵌入开发中的基础概念,名字看起来高端大气上档次,但其本质还是编译,也就是把 C/C++ 代码编译成可执行程序,和我们初学 C/C++ 语言时的  Hello World!程序编译几乎完全相同。


那么,你可能会问,不同之处在哪里?


不同之处仅仅是,Hello World!在本机编译,可执行程序在本机运行;而交叉编译则是:程序在本机编译,而可执行程序在设备运行(即:本机无法直接运行交叉编译得到的二进制文件)。

对于大型嵌入式企业,开发环境一般分为两个部分:

  • 代码编辑环境

  • 代码编译环境


产品代码位于代码服务器上,每个员工远程登录代码服务器之后创建自己的代码分支,之后就可以进行代码编辑和编译了。


其中,代码编辑是在员工的工作 PC 上完成;而代码编译则是在服务器上完成。编译得到的二进制可执行程序,需要拷贝到工作 PC 上之后烧写到设备中。

大家通过类比可以发现,其实目前的鸿蒙设备开发方式就是企业级嵌入式产品的开发方式,只不过进行了缩减而已!


代码编辑和代码编译在“不同的机器上”,两台机器通过网络互联,交叉编译得到的二进制文件通过代码编辑所在的环境烧写到设备。


那么,这有什么问题吗?


传统的嵌入式开发方式对于程序老手来说,没有任何问题,用起来游刃有余。但是,对于新手来说就可能是个噩梦了。


大家可以想想,程序出问题后如何定位?


就目前鸿蒙设备开发的情况来说,只有打印日志这一招可用。这一招最常用,可问题也不少......

当然,有同学可能会说:“接个 JTag 断点调试就可以解决这个问题了!”


我想说,理论上确实如此,但是目前支持鸿蒙系统的开发板(如:Hi3861 开发板)几乎不可能使用 JTag 进行调试!


说得更简单一点:目前还没法用 JTag 对鸿蒙设备进行调试。所以,得另想办法,而 Python 是一个可行的选择。


Python 语言简单而又不失强大,用于设备应用开发是再合适不过了。并且的,Python 开发者数量巨大,如果鸿蒙应用开发能够支持 Python 语言,那么鸿蒙宇宙又可以增加无数闪耀的新星!

目标:除 C 语言之外,给开发者提供另一种选择,可以使用 Python 语言开发鸿蒙设备应用程序。


所以,最迫切需要的是一个 Python 语言解释器,并且能够作为应用的一部分运行于设备上。


如下图所示:

那么现在的问题就是:如何获得需要的 Python 语言解释器?

在这里有同学可能会问:为什么不直接移植 MicroPython?而是对 MicroPython 做剪裁?


原因很简单,我的想法是让鸿蒙设备支持 Python 开发方式,而不是取代 C 语言开发方式,更不是取代鸿蒙!


大家要明白 MicroPython 设计的初衷是直接运行于微控器,使用 Python 控制硬件,所以 MicroPython 本身已经具备了一些操作系统的特质,如果直接移植到设备(Hi3861 开发板),那么也就意味着用 MicroPython 替代了鸿蒙,这显然与期望不符!

MicroPython 的语言解释器是对 Python 的一个重新实现,非常适合资源受限的嵌入式设备。


因此,最好的做法就是剪裁 MicroPython 的语言解析器,之后将鸿蒙设备的系统 API 接口绑定到 Python 语言(即:Python 版同名系统 API),这样就可以达到我的目的了。

很显然,在设备端需要开发一个应用引擎。如果需要使用 Python 开发设备应用程序,直接编译运行这个应用引擎并运行于设备之上。


而设备应用程序由 Python 脚本构成,编写好之后直接传入设备中即可。


讲到这里相信各位同学也明白了,设备应用的 Python 脚本其实根本“不知道”自己执行在鸿蒙系统上,这些脚本的执行仅仅需要 Python 解释器和相应 API 接口。


那么,请大家思考一下,如果这个引擎运行于 Windows 之上会发生什么?

会发生的事情显然就是:我们可以在 Windows 上执行为鸿蒙设备而编写的 Python 应用脚本。


于是,前面所说的调试问题就可以迎刃而解了。


在 Windows 上使用纯 Python 语言模拟实现鸿蒙设备的 API 接口(Python 版),然后使用现有的 Python 开发环境调试设备应用脚本(如:断点调试)。


这样就可以大大提高开发效率,避免代码中满篇的添加 printf 打印语句。

Jython 是使用 Java 语言对 Python 的一个重新实现,借助它就可以在 Java 中使用 Python 进行编码。


而鸿蒙手机 APP 支持使用 Java 语言进行开发,所以理论上可以在手机 APP 中使用 Python 完成部分代码的编写!相关案例我会在后续为大家提供出来。


此次直播回放可以点击下面链接观看:
https://edu.51cto.com/course/26379.html

课件资料可点“阅读原文”在附件中下载。希望大家能多多关注我的分享!


“阅读原文”下载课件资料

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/106202
 
491 次点击