
前言
Google的Android系统是目前主流的移动设备操作系统之一,具有源代码开源、硬件和开发平台价格低等特点。与iOS系统相比,Android系统对设备兼容性、硬件资源利用率、API传承性和App监管程度的要求较低,而且Android系统赋予了开发者和用户更多的权限与选择性。使用iOS系统的用户需要通过App Store安装App;而Android系统没有指定发布平台,甚至开发者可以在自己的网站上发布App的安装包。在App Store中发布App的审核周期较长,且个人开发者每年需支付一定费用,支付后才可以使用物理设备运行测试,否则只能使用模拟器。在这两个系统上,我都开发过App,开发难度基本相同,各有优势。
2014年,独立开发完成了一个基于1公里半径生活圈的App——微距(http://www. weiju2014.com),其中包含了社交和购物的功能。我大约用了10个月时间完成了Android系统的微距App和后台网站的程序开发,又用了2个月时间完成了iOS系统的微距App开发,感觉在iOS系统开发最“幸福”的地方是无须考虑设备和API版本的兼容性,这也是Android系统最大的痛点。在微距App策划阶段,考虑到对于个人开发者而言,宣传推广和高并发的后台服务器可能是最大的困难,而且积累不了大量的用户就无法发展起来,后来将微距App的社交功能分离出来,在此基础上增加了用户筛选和评分的功能,形成了一个免费的交友App——未见(http://weijian.weiju2014.com)。
2018年,开始准备写一本Android开发的零基础教材,从最基础的Java和Kotlin语法开始写起,一直到综合实例未见App开发完成为止。除不包含游戏和系统安全的内容外,涵盖社交、新闻、购物等App所包含的知识点,并且搭建一个供学习者练习使用的服务器平台。
2019年偶然的一天,与张鑫编辑沟通时聊起了这个想法,决定写一本精简版,即适合高校教学的Android开发教材,这就是这本书的由来。我和张鑫编辑商量后确定了这本教材的基本思路:知识点能够适应高校毕业生第一年工作的需要,并且教学内容能够在一个学期内完成。Android开发课程通常会作为大二或大三的专业选修课,距离毕业至少有1年时间,待学生毕业后,Android 10会较为普及,因此本书选择目前最新的API level 29作为基础,摒弃所有过时的API,使用Google发布的最新标准,不使用向下兼容的方法。同时,考虑到学生毕业后可能会遇到需要向下兼容的情况,本书配套资源提供了几个使用Google已经不推荐使用或摒弃的方法的工程文件,感兴趣的学生可以自行查看源代码,书中不再赘述。
本书按照App使用过程中涉及的各种功能对知识点进行分类,并归纳总结了相关类的常用方法和常量。由于智能手机的普及程度高,所以书中大量使用了高度概括和抽象的方式进行描述,“提示”中介绍相关知识点和使用方法,弥补读者知识储备的不足。本书没有将多线程、异步处理、文件操作、权限、动画、绘制等通用性强且较为容易理解的内容设立为独立的章节,而是将其融入实例工程中。实例工程多以典型的应用场景进行演示,掌握方法后可以举一反三,根据需要灵活应用。Activity、Fragment、Service、IntentService、BroadcastReceiver等类的实例工程则以流程的方式进行演示。对于所需代码量较大或需要向下兼容的情况,通过“拓展工程”提供给读者,源代码可在本书配套资源中查看。本书实例均使用原生代码编写,没有使用第三方类库或官方扩展类库,因此那些能够自行实现的功能,建议尽量使用原生代码编写。
本书可作为软件工程、计算机科学与技术、网络工程、数字媒体技术等专业Android开发课程的教材,也可供具有Java基础的编程爱好者参考。
对自学本书的读者建议:第1章根据内容逐步操作即可;第2~9章先阅读基础知识,了解相关类的常用方法或常量,然后按照步骤完成实例工程,联想使用过的App中哪部分使用了实例工程中的技术,再思考实例工程中没有使用到的方法或常量还能实现什么功能,最后将常用方法或常量及实例工程进行一次强化复习。
学习完本书之后,理论上读者已经能够开发具有基本功能的社交类、新闻类、购物分享类、技能分享类、拍照类、录制视频类、音乐播放类App。当然,App只有这些基本功能是远远不够的,还需要适合的UI界面和后台服务器的支持,服务器端推荐使用CentOS+Nginx+PHP+ MySQL。如果是小团队或个人开发App,定位、支付、推送、地图、手机验证码、二维码识别、视频、通信等功能建议直接使用第三方提供的服务,可以节省大量的开发时间,降低技术难度,减少运营成本。
本书配备素材、工程源代码和基础工程源代码,可在华信教育资源网(http://www. hxedu.com.cn)下载。源代码使用Android Studio 3.5.3和Gradle 5.6.4进行编写。Android Studio和Gradle更新比较频繁,读者下载时的版本可能更高,打开工程后根据提示更新即可。另外,还提供了QQ群(群号:653171771,密码:teachol),加入QQ群的读者可以交流学习过程中遇到的问题。
书中的不妥和疏漏之处,欢迎读者批评指正,我的邮箱是baizhe_22@qq.com,读者可以随时与我联系。
白喆
2020年3月31日