《第一行代码》从出版到现在已经有两年多的时间了。当然,如果是从我开始写书的那天算起的话,时隔已经三年半之久了。回顾这三年半的时光,不得不感慨,Android 技术的发展真是日新月异。
记得在2013年我刚开始动笔写《第一行代码》的时候,Google正好推出了新的开发工具Android Studio,不过那个时候还只是 v0.1 版本。当时我还和我的编辑陈冰老师讨论过,书中到底是使用Eclipse来开发还是使用Android Studio来开发。最后讨论下来,由于Android Studio还太过于早期,不够成熟和稳定,因此《第一行代码》中还是使用Eclipse来作为开发工具的。而如今,三年多的时光,Android Studio已经从0.1版本升级到2.2版本了,并且早已替代了Eclipse,成为当前最主流的Android开发工具。
《第一行代码》全书的完稿时间大概是在2014年的3月份,而就在5月份的一天早上,陈冰老师急匆匆地打我电话,说出大新闻了!我疑惑地问:“什么大新闻啊?”他说:“啊?你不知道啊,Android出5.0系统了!(那个时候还叫Android L)”我当时听了之后脑子是有点懵逼的,要知道,《第一行代码》是基于4.x系统来编写的,谷歌从2011年发布4.0系统以来,一直是以4.1、4.2、4.3、4.4这样的小版本系统来升级的,怎么偏偏就在《第一行代码》快要发售的时候推出了这个号称是“历史上版本改动最大”的系统升级呢!
当时我和陈冰老师还是紧急商讨了一下,由于《第一行代码》计划是8月份上市,如果非要强行加入5.0系统的内容,一是我学习需要时间,二是写作也需要时间,这样书的发售就必然要推迟了。后来我们觉得,新系统刚刚出来,普及恐怕还要很久,就不赶这波热潮了。于是,《第一行代码》中的内容最终仍然是基于Android 4.x来编写的。
后来这两件事让我始终觉得遗憾,由于时间的原因,《第一行代码》完美地和Android Studio以及Android 5.0错过了。
虽说缺少了一些最新的知识点,包括后来还出现了盗版泛滥的事件,不过这些都没能影响《第一行代码》火爆的销售。其实并不是因为我推广做得有多好,大家可能觉得我的博客访问量比较高,在上面挂个推广链接什么的就能让书畅销了,并没有那么简单。
《第一行代码》在2014年的销量其实很一般,是在2015年才攀升上去的。那个时候很多第一批《第一行代码》的读者已经把书读完了,产生了良好的口碑,他们又将这本书推荐给了更多想学习Android开发的人。这种人传人的方式,比我单纯在博客上面挂个购买链接以及出版社的各种宣传要远远有效得多。如果真是一本大烂书,相信不管我怎么推广,也不会有多好的销量的,反而还会被大家骂。只有真正内容过硬,才能得到大家的认可。
现在,只要你去大一点的书店或图书馆逛一逛,在里面都能找到《第一行代码》的身影。京东或者亚马逊的畅销排行榜,《第一行代码》在Android图书分类里大多数的时候销量都是排第一的。良好的口碑让很多人将《第一行代码》作为学习Android的首选书籍,现在将它称之为国内的“Android学习第一书”应该并不为过。
那么《第一行代码》到底卖了多少本呢?之前我还从来没有公布过具体的数字,那么由于要出版升级版了,可以向大家汇报一下成绩了。很多没接触过图书行业的人,对于书的销量可能没什么概念,这里我先向大家普及一些知识。首先中国的图书行业并不是很发达,因为喜欢买书的人确实不多,而计算机图书又由于受众面很窄的原因,买的人就更少了。现在的不少计算机图书甚至是连首印都卖不完,能卖到一万本以上的计算机图书就可以算得上是畅销书了,能卖到三万本的话那已经是凤毛麟角了。陈冰老师当时拍胸脯跟我保证说,《第一行代码》至少能卖两万本,我笑笑说,能卖到一万本我就心满意足了。而现在,《第一行代码》出版两年半的时间,一共卖出了八万一千本,这个成绩是当初谁都无法预料到的。在图灵出版的所有原创书中,《第一行代码》是卖得最好的。
《第一行代码》虽然没有赶上Android Studio和Android 5.0的热潮,但同时这几年Android技术发展得实在是太快了。2015年Google推出了Android 6.0系统,2016年又推出了Android 7.0系统。其实每推出一个新的系统,也就意味着《第一行代码》中的内容更加过时。因此在今年年初的时候,我终于下定决心,将书中的内容全面升级,开始编写《第一行代码——Android 第2版》。当然这个名字感觉有点长,因此我更喜欢直接叫它《第二行代码》。
新书的首要目标是要将《第一行代码》中已经过时的内容进行更新,以及加入这几年出现的各种新技术的讲解。包括Android Studio的使用,以及Android 5.0、6.0、7.0系统中引入的各种新的功能。
由于书的整体内容结构没有改变,因此一开始我以为只是小修小补而已,但事实上远没有我想象得那么轻松。除了介绍新知识点之外,书中之前的所有项目都需要重新编写和测试,以保证代码在新老系统上的兼容性。另外,由于Android从5.0系统开始,UI风格变化很大,因此《第二行代码》中所有的截图都需要重新截取,没有一张图是可以直接使用《第一行代码》中的。毫不夸张地说,我几乎重写了整本书。
这次的新书我大概是在今年2月份的时候开始动笔的,基本保持着每个月写3章的进度,到9月份的时候书中绝大部分的内容都已经写完了,然后我就开始等,等Android 7.0以及Android Studio 2.2正式版的发布。因为我不想重蹈覆辙,再留上次的遗憾,我不想书中的内容都是基于Android 6.0来编写的,而书还没来得及上市,Android 7.0系统就推出了。既然是要更新,那么就索性一次性更到最新。
Android 7.0其实还好,大概是在9月初的时候就推出正式版了,但当时Android Studio 2.2的正式版真的等得我好焦急,每天我都要到官网上去刷一下看看有没有发布。终于在9月下旬的时候把Android Studio 2.2给盼来了,于是我迅速对全书的所有内容进行了一遍修订,并将所有的代码都在Android 7.0和Android Studio 2.2中进行了重新的适配。10月份的时候全书顺利完稿并且进入出版流程,11月初送厂印刷,11月底开始预售,这个速度恐怕已经是史无前例了。
因此,《第二行代码》也是国内第一本基于Android 7.0系统的书籍。
《第二行代码》中的内容我相信很多人都会非常感兴趣,因为里面确实加入了很多很新的知识。略粗概括一下的话,新增内容就包括有Android Studio、Gradle、Material Design、运行时权限、多窗口模式、RecyclerView、百分比布局、Lambda表达式、OkHttp、Doze模式等等,几乎囊括了Google近几年推出的所有热点技术。除此之外,还加入了几个比较完整的项目,不仅单个知识点的内容更加丰富,对各知识点之间的综合运用讲解也比《第一行代码》要好上很多。总而言之,这真的是我写得非常用心的一本书。
下面我就挑几个《第二行代码》中比较有特色的章节来给大家详细介绍一下吧。
第1章中搭建开发环境不再是使用Eclipse了,而是改用了Android Studio。书中除了对Android Studio的基本用法进行了讲解之外,还介绍了一些小技巧,比如说下面的这种Log打印技巧我相信很多人是不知道的:
第3章中,新增了RecyclerView和百分比布局的讲解,其中对ReyclerView的多种方法都进行了细致的介绍,包括会带着大家实现纵向列表、横向列表、以及瀑布流列表的效果,下面是瀑布流效果的截图:
另外,第3章中还将最佳实践环节的聊天界面使用RecyclerView进行了重写,最终效果如下:
第7章中增加了Android 6.0运行时权限的讲解,第8章中对系统通知的各种用法进行了更新,第9章中增加了OkHttp的讲解,第10章中结合前面所学过的运行时权限、通知、OkHttp等知识,实现了一个综合度非常高下载服务程序,并且应我的QQ群中群友们的要求,这个下载服务还支持了断点续传功能。效果如下图所示:
第11章中讲的是地理位置服务(LBS),其实在《第一行代码》中,LBS方面的内容已经写得比较详细了,只是由于近几年Google的服务在中国全面无法访问,因此《第一行代码》中的这些内容也都失效了。那么为了保证这次《第二行代码》中的内容大家都可以正常运行,我将所有使用Google LBS服务的部分都替换成了百度LBS,现在不管是定位也好,地图也罢,大家都可以放心运行而不用担心程序一直跑不通了。
第12章是本书变动最大的一个地方,因为整章内容全部重写了。原来《第一行代码》中的第12章讲的是传感器的使用,我觉得这部分内容比较鸡肋,于是直接将这一章删掉了。现在《第二行代码》的第12章使用一整章的篇幅介绍了Material Design方方面面的知识,包括讲解了Toolbar、 滑动菜单、 NavigationView、 悬浮按钮、 Snackbar、 CoordinatorLayout、 卡片式布局、 下拉刷新、 折叠式标题栏等等控件的用法和特效的实现。整章内容学习完之后,最终大家都能实现一个具有高度Material Design效果的程序,如下图所示: (由于CSDN最大只能上传2M的图片,因此画质被压缩得有点渣。你也可以点击 这里 查看高清版的视频效果)
第13章中也加入了不少新的内容,因为第13章是最后项目实战之前的一个总结性章节,里面有很多你必须要掌握的高级技巧。新增内容包括有Android 6.0 Doze模式讲解、Android 7.0多窗口功能讲解、以及Lambda表达式讲解等,也都是满满的干货。
第14章仍然是项目实战部分,仍然开发的是酷欧天气,只不过这次开发的是酷欧天气2.0,比《第一行代码》中的酷欧天气可要牛逼得多了。之前很多朋友在学习《第一行代码》中的酷欧天气时,时不时就会有人跟我反馈,获取省市县数据的接口访问不了了,或者是获取天气信息的接口访问不了了。对于这种情况我也无可奈何,毕竟用的是第三方服务的接口,人家接口关闭了我也没有办法。而《第二行代码》中,为了保证接口的稳定性,我专门在京东云上购买了一台服务器,用于给大家提供长期可靠的接口支持,保证不会再让大家遇到学着学着接口就失效了的问题。
另外,如果你也有使用云服务的需求,可以点击 这里 注册京东云账号,免费体验京东云服务。
说了这么多,那《第二行代码》中的酷欧天气到底比《第一行代码》中的酷欧天气牛逼在哪里呢?我们直接来看下效果对比就知道了。先来看一下《第一行代码》中的酷欧天气效果,如下所示:
然后我们再来看一下《第二行代码》中的酷欧天气效果,如下所示:
相信不需要我多说,大家也一眼就能看出来,这两个版本的酷欧天气明显不是在一个档次上的。另外,新版酷欧天气的背景并不是一成不变的,而是每天都会有不同的背景,那么是如何实现的呢?等你学到这一章的时候就知道了。
第15章仍然还是教大家如何打包APK文件,以及如何上架应用程序,但是这次将会使用Gradle来打包APK,并且讲解了如何使用Gradle来打包多渠道APK文件。至于上架部分,《第一行代码》中讲的是如何上架Google Play,而现在Google Play已经无法访问了,因此《第二行代码》中改成了教大家如何将APP上架到360应用商店。总之,《第二行代码》的宗旨就是一定保证书中的所有例子都可以跑得通。
当然,除了上述内容之外,其他章节也都有很多的改动。尤其是在程序兼容性调整方面,几乎对每一章的代码都进行了优化和升级,以保证书中所有的程序在Android 7.0系统上都能完美兼容。不过这里我就不展开来细讲了,更多内容等待你自己去发现。
《第二行代码》的封面设计可以说是下足了功夫。因为要和《第一行代码》有传承关系,但又要和《第一行代码》有明显的区分。因此,我当时给设计师提了两点要求:
设计师当然也是做得很用心,给我提供了好几个版本让我选择,然后我又从中选出了3个我个人比较满意的版本,最后在公众号上搞了一个投票让大家来做最终筛选:
最终,绿色版本以接近50%的得票率当选,《第二行代码》的封面也最终定版,由大家共同选出来的一定是最好的,我们来一起欣赏下吧。
再来看一张霸气的宣传海报吧:
《第二行代码》中还会赠送大家一个非常非常精致的小礼物,我个人认为这个小礼物也是这本书的特色之一。
其实我从小就是一个特别爱惜书的人,我是从来不舍得给书折角来记录看到哪里的。每当看到有些人将一本书的书角折得伤痕累累时,我都会觉得很心疼。因此,当我听出版社说,可以在《第二行代码》中赠送书签时,我高兴得要命。
既然是要赠送书签,那么书签也得好好设计一下。我仔细想了想,书签的主题一定要和书的主题相关才行,而《第二行代码》中最主要的特色就是涵盖了Android 5.0、6.0、以及7.0中的知识,那么就干脆以这三个系统为主题,设计三种不同风格的书签吧。
设计师当然也是很给力,设计的三种书签都非常好看,我们来一起欣赏一下吧:
这三种书签会随机放在每一本书里面,你将会拿到哪一种书签就全看运气了。
当然,书签这种小东西并不值什么钱,但是我还是花了很大心思去做这件事情,因为我对这本书的一点一滴真的都很用心。
《第二行代码》的定价我只能用“很良心”来形容。《第一行代码》一共有500多页,却只定了79元,出版社的成本负担已经比较高了。而这次《第二行代码》不仅全面升级了内容,页数也增加了几十页,还赠送书签等等,因此出版社强烈建议将书价定为89元。虽说书价越高意味着我拿到的稿费也越多,但是高的书价同时也会在一定程度上影响销量。我咨询过QQ群里的群友们,其实很多人还是很在意书价的,尤其是还没工作的学生。因此,为了给大家争取权益,我也是尽了我最大的努力和出版社各种沟通、协商,最终出版社终于同意让《第二行代码》仍然保持79元!全面升级了内容,价格还一分钱不涨,这已经是我所能做的全部了。感谢出版社在价格方面做出的妥协,毕竟纸张、印刷、物料等各种成本都在飞涨。
不过仍然要提醒大家一点,79元只是书的标价而已,而通常我们在网上买书都是有折扣的。折扣的多少由各网店自己来定,我参与不了,但一般也就是五六十块钱就能买到了。
了解了这么多,不知道你有没有下定决心要买一本呢?目前《第二行代码》这本书已经在京东、当当、亚马逊等网上书店上架了,也上架了PDF、Kindle等电子版,有需要的小伙伴们请猛戳下面的地址:
新书出版,里面难免会存在一些勘误,大家可以点击 这里 查看所有已知的勘误,在阅读的时候避过这些坑,每一个确认的勘误都会在下一次印刷的时候修正。当然,如果你有发现任何勘误,也可以在这个网站上进行提交,一旦勘误被确认还能领到图灵的银子,银子可以用来免费兑换图灵的图书呦。