作为华为认证的“首批HarmonyOS系统课程开发者”,我在2020年8月应邀到华为总部学习,有幸在鸿蒙操作系统(HarmonyOS)宣布升级至2.0版本(2020年9月10日)前一个多月接触到HarmonyOS,HarmonyOS的理念和技术让我感到非常震撼!
HarmonyOS与Android和iOS一样,是独立的操作系统,支持多种硬件设备,包括智能手机、平板电脑、个人计算机、电视机、智能手表等。但HarmonyOS又与Android和iOS不同,HarmonyOS的侧重点是物联网(Internet of Thing,IoT),因为21世纪将是物联网的世纪,也可以称为“物联网元世纪”。随着5G时代以及以后的6G时代、7G时代的来临,大量的物联网设备将得到网络支持,不再是独立的存在,而是像连入全球物联网大脑的一个神经元。数以万亿计的物联网设备产生的数据将在这颗全球物联网大脑中流动,产生难以置信的“力量”。华为公司正是看准了这个爆发点,才顺应时代的潮流推出了面向物联网的HarmonyOS。
作为首批HarmonyOS系统课程开发者,我承担着支持HarmonyOS生态发展的职责。而HarmonyOS生态发展的首要任务就是让广大的程序员了解HarmonyOS并为HarmonyOS开发App。所以我在哔哩哔哩网站我的主页(https://exl.ptpress.cn:8442/ex/l/db0f514e)上传了多套免费的HarmonyOS视频课程。但有很多学员提出,视频用来演示开发过程比较好,想查询HarmonyOS的某项技术并不方便。因此,为了满足大量学员的需求,我决定将数月的HarmonyOS App开发的实践经验,以及遇到的各种问题写成一本书,以方便广大学员配合我上传在哔哩哔哩网站上的免费视频课程学习HarmonyOS App开发。
在华为正式推出安装了HarmonyOS的手机(后文中简称为“HarmonyOS手机”)或大范围开放手机安装HarmonyOS之前,大多数人只能使用HarmonyOS模拟器来体验HarmonyOS App开发。不过由于和华为有合作的关系,我提前得到了几部用于测试的HarmonyOS手机,其实就是安装了HarmonyOS的P40。使用HarmonyOS模拟器可以测试大部分功能,但涉及硬件(如摄像头、传感器、蓝牙等)的功能就无法测试了,所以要完整测试HarmonyOS的各种功能,就必须使用HarmonyOS手机或其他安装了HarmonyOS的设备。本书的内容正是基于这些HarmonyOS手机完成的。不管正在阅读本书的读者是否拥有HarmonyOS手机,都可以通过本书体验使用HarmonyOS手机的感觉。
经过几个月来不断在网上输出关于HarmonyOS的内容(主要是文章和视频),我还收集了网友反馈的很多关于HarmonyOS的问题,其中被问得最多的一个问题就是HarmonyOS使用什么语言做开发,是否容易学习。关于这个问题,读者不用担心,HarmonyOS的核心开发语言是Java,而目前Java语言在程序员群体中非常流行,并且各种学习资料极其丰富。
HarmonyOS除了开发语言是Java,开发方式也与Android类似。这样设计主要是为了兼容Android,所以,如果读者对Android开发有一定的了解,学习HarmonyOS开发会更容易。
写作本书时,我使用的IDE和HarmonyOS的版本,都是最新的。华为在2020年12月发布了HarmonyOS 2.0手机开发者Beta版本,本书中的所有代码都是基于这个版本编写的。
本书的读者将有幸成为国内第一批从事HarmonyOS App开发的开发人员,同时,本书是一本基于Java的HarmonyOS App开发教程,而且是基于HarmonyOS 2.0编写的。我真诚地希望读者可以用心阅读这本书,多掌握一项技能,为自己未来的求职和工作增加更多的筹码,让自己获得更多的机会和自信。让我们开启HarmonyOS App开发之旅吧!
本书内容通俗易懂,由浅入深,不仅适合初学者入门,还适合专业开发人员阅读。在学习本书内容之前,读者需要有Java基础,但并不需要有Android基础。如果读者以前没有接触过Java,可以到哔哩哔哩网站我的主页学习免费的Java视频课程。尽管Android并不是阅读本书的必备技能,但了解Android有助于学习HarmonyOS App开发。如果读者想对比Android一起学习,也可以到哔哩哔哩网站我的主页学习免费的Android视频课程。
阅读本书时,读者可以根据自身的情况来决定如何阅读。初学者可以从第1章开始由浅入深地学习本书的内容,这样做可以不费劲儿地理解所学的内容。已经有一定的Java开发经验,并且从事过或正在从事Android App开发的开发人员,可以采用跳跃式阅读的方式,挑自己感兴趣的内容阅读。无论如何阅读都请记住,本书中的每一章内容、每一行代码都非常精彩!
本书的内容是非常系统化的,其中介绍了HarmonyOS目前支持的大多数核心技术,尤其是全面讲解了HarmonyOS的分布式特性,包括Feature Ability与Feature Ability、Feature Ability与Particle Ability之间的交互。全书一共12章,其中前10章是基础知识,主要包括HarmonyOS开发环境的配置和调试、Page Ability和AbilitySlice、布局、UI组件、对话框、数据管理、Data Ability、Service Ability、多媒体、传感器、定位、蓝牙等。
第11章给出一个应用类App项目——在线电子词典。这个项目演示了如何将多种技术综合在一起完成一个复杂的App,其中涉及数据库、资源文件、文件存储、网络爬虫、使用第三方库等知识,而且这个项目除了使用了Java,还使用了Python生成离线词库,如果读者不熟悉Python,可以到哔哩哔哩网站我的主页学习免费的Python视频课程。
第12章给出一个游戏类App项目——俄罗斯方块。这个项目的核心是通过Canvas在窗口中绘制各种游戏元素,如游戏背景、方块等,并通过复杂的算法完成各种动作,如方块的移动、快速移动、旋转等,同时支持游戏积分机制。这款游戏类App演示了如何利用HarmonyOS中的绘图功能实现可交互的图形界面。游戏本身就是一类复杂的、可交互的绘图程序,因此也是展示HarmonyOS App开发的一个理想的例子。
本书各章的内容相对独立,因此,读者除了可以循序渐进完成对本书的学习,还可以将本书作为参考手册,随时查阅。
尽管我和孙喆思、张涛编辑以及其他为本书付出努力的人员已经尽力对本书的内容进行了反复核对,但书中难免会存在一些未被发现的错误。读者可以在人民邮电出版社异步社区上查看所有已发现的错误,也可以通过在我的公众号中输入174496获取最新的勘误表。如果读者在阅读本书时发现了还未被确认的错误,也欢迎直接在异步社区的本书页面上提交勘误,或者通过公众号“极客起源”以及哔哩哔哩网站我的主页联系我,我会及时对读者反馈的错误进行确认。