历时一年,我的著作《第一行代码——Android》已出版!

书中源码下载地址:http://download.csdn.net/detail/sinyu890807/7747691


前言


其实我当初决定开始写博客的想法挺简单的,觉得自己搞技术这么多年了,总应该要留下点什么。既然没能写出什么出色的应用,那至少也要留下点文字分享给大家,以指引在我后面的开发者们,毕竟我也从前辈们的博客那里受惠了很多。


受邀


下定决心之后我就开始了我的博客之旅,令我没想到的是,我写的文章竟然非常受大家的欢迎,短时间内就聚集了大量的人气。更令我没想到的事,在我开始写博客不久之后,人民邮电出版社图灵公司的副总编辑陈冰老师就联系上了我,希望我可以写一本关于Android开发技术的书籍!


陈冰,第一次听到这个名字的时候相信大家和我一样都不会感到熟悉,但是当他告诉我,他之前一手策划过《大话设计模式》这本书时,我立刻冲向了我的书柜并找到它,翻开扉页后赫然就在责任编辑那一栏看到了陈冰的名字,往后翻还可以看到他为《大话设计模式》写的序。这时我的心里只有一个念头,他邀请我写的这本书我是无论如何都拒绝不了了!


创作


接下来我就开始构思如何去完成这本书了。创作的过程注定是艰辛的,虽然我已经有了一些写博客的经验,但写书着实还是头一回,而写书又和写博客有着很大的差距。博客的内容可以比较散乱,想到哪里写到哪里,但书的内容一定要系统化,讲究循序渐进,基本上在写第1章的时候就应该把全书的内容都确定下来了。


正所谓万事开头难,因此我首先是花了大约两个星期的时间制定了这本书的目录,这也就成为了我后面的写作大纲。陈冰告诉我,如果可以把目录制定出来,那么基本上就已经完成80%的工作了,然而事实证明,即使制定出了目录,事情也远远没有想象中的那么简单。我毕竟无法全身心地投入到写书当中,因为每天还要上班工作,有时还要加班,我只能在下班了之后再开始整理自己的思绪,然后动笔。另外,我之前对写书这件事算是严格保密的,并没有在博客上进行过任何透漏,因此我无法因为这个原因而停止更新博客,仍然坚持着每周或两周一篇的节奏。


就这样在工作、博客和写书之间制衡着,虽然很辛苦,但我并没有落下任何一项。工作依旧相当出色,博客的质量大家有目共睹,而书怎么样大家拿到手之后就知道了。我创作的那段时间大概是保持着每月两章的进度,包括春节假期的那段时间也写个不停,最终在今年的3月份完全终稿,刚好赶上了截稿日期。到这里我的工作就已经基本完成了,后面的任务开始由出版社接手,他们审核、校对、排版、设计封面、印刷,终于在7月份的下旬开始预售了,一年的辛苦即将可以看到成果,我也表示非常期待。


比较


叙述完了创作的过程,接下来我们还是看一看这本书吧。这本书叫作《第一行代码——Android》,从名字上就可以看出来,这是一本非常适合初学者的书籍,我特别想写这样的一本书,因为它可以和我的博客相辅相成。由于我写博客的时间比较晚,13年才开始写的,当时很多Android技术相关的内容都已经被人写过了,重复再写一遍别人写过的东西显然太没创意,因此我给自己的博客定了一个主题,那就是只写比较高级的应用技术。可是博客的主题虽然非常鲜明,却明显不太适合初学者的朋友们阅读,从众多的评论当中我也能看出,有不少朋友的基本功还是不够扎实的,如果能结合一本介绍基础的书来巩固基本功,那你就真的变得无懈可击了,因此《第一行代码——Android》应运而生。


下面我来对博客和书中的内容做个简要的对比吧,让大家心里有个数。

  • 博客更加倾向于介绍Android高级技巧,而书中则是基础、进阶、实用技巧都有。
  • 阅读博客时你需要有相当不错的Android基础,而阅读书时你不需要有任何的Android基础。
  • 博客中的内容相对比较散乱,而书中的内容更加系统化、科学化(这个是必然现象,一个是想到哪儿写到哪儿,一个是精心策划出来的)。
  • 出于对读者的尊重,我不会简单地将博客里的内容复制到书里,而出于对版权的保护,我也不会把书里的内容在博客上发表。因此,书和博客的内容基本不会有交集,这样买书的朋友们不会有种买了本纸质版博客的感觉。


特色


当然了,这本书还是有很多独有特色的,不然的话就和市场上的其它书没什么区别了。你不需要有任何Android基础就可以阅读它,但它会带领你一步步深入了解Android的各项功能。其中有不少章节我认为是非常出彩的,比如说第二章对Activity启动模式的讲解非常细致,市场上多数同类书中都没有这部分内容的,第七章对ContentProvider的讲解也相当到位,相信可以满足不少朋友的求知欲望。再比如说大部分章节的最后都会附有一个最佳实践部分,其中很多的技巧都是我日常工作中总结出来的,对你来说一定也很适用。再比如说,书中会对Git的用法进行穿插讲解,并教你如何将代码托管到GitHub,如何将软件上架到Google Play,如何在软件中嵌入广告盈利等等等等,我就不一一举出了,等待你自己去发现。


另外,为了让这本书读起来不会枯燥,我努力让自己的语言变得幽默,可毕竟在这方面不怎么擅长,做得不够好。但本书中引入的经验值、升级、宝物系统则很好地弥补了这一点,通过不断地阅读,你将会获得经验值、升级,并赢得匪夷所思的宝物,让你在阅读过程体会到更多的乐趣。这个系统是由陈冰写的,如果大家阅读之后对这个系统有什么反馈或建议,可以发送邮件给他(neosaga@126.com)。


很多朋友私下里有问过我,应该怎样去学习Android才能有所提高,那么今天我可以给出答案了。书和博客结合在一起学习,建议先看书打牢基础,然后再看博客进行进阶,当你把书和博客中的内容都吃透了的时候,那么我会的东西你也就都会了。


封面


看到了这里,相信有些朋友已经迫不及待想要购买一本了吧?别着急,我们再来看一下这本书的封面。封面的设计不是由我负责的,但诞生的过程也算是经历了各种曲折。陈冰对封面的要求非常苛刻,既要有深度有含义,又要能吸引眼球,还要给人一种想要翻开的冲动。经过了两个月左右的设计,所谓的“本年度最佳封面终于出炉了”,我们来欣赏一下:




红色作为亮色系的代表色,使得它可以在众多图书当中脱颖而出,让人一眼就能看见它。


再来看一下宣传海报的样子:




怎么样,有没有一种视觉震撼的感觉?!虽然最终的封面夺人眼球,但任何东西都不会是凭空出现的,创作的过程必然有它的艰辛和曲折,《第一行代码——Android》封面诞生记这篇文章中专门讲述了本书封面的诞生过程,感兴趣的朋友可以像看故事一样去了解了解。


定价


79元,看到这个价格时我相信很多朋友觉得并不便宜,但实际上这已经是我尽最大可能争取到的价格了。由于书的价格是由出版社根据页数来制定的,我并不能做过多干预。通常情况下五百多页的书都可以定价到八十几、九十几元,最低也不能低于79元,于是我果断申请了最低的价格。


其实换一种思路来想,79元也不算贵,因为这只是书的原售价,而我们在网上买书的话通常都会打折,基本上也就只需要五十多块钱就可以买到了。另外我觉得买书不用太在意价格,而是应该更在意里面的内容,书的内容只要能够真正给你带来帮助,那么它的价值就是远远大于这几十块钱的(就我自己而言,我大学期间总共大概花了两千多块的生活费用于买书,这些书一直都珍藏在我的书架上,是我永久的财富)。


购买


了解了这么多,不知道你有没有下定决心要买一本呢?目前《第一行代码——Android》这本书已经在当当、京东、亚马逊、互动这几个网上书店上架了,有需要的小伙伴们请猛戳下面的地址:


当当网购买地址

京东购买地址

亚马逊购买地址

互动出版购买地址

天猫购买地址


然后


书的出版算是我的程序之路上一个新的里程碑吧,然而人生的路还很长,未来仍然需要努力向前。因此,我后面还是会一如既往地坚持更新博客,自我提升的同时也分享给大家。因为博客的原因,我结识了很多天南海北的新朋友,感谢众多朋友以及亲人的一路陪伴,愿未来大家都能天天向上。


书中源码下载地址:http://download.csdn.net/detail/sinyu890807/7747691


关注我的技术公众号,每天都有优质技术文章推送。关注我的娱乐公众号,工作、学习累了的时候放松一下自己。

微信扫一扫下方二维码即可关注:

        

已标记关键词 清除标记
相关推荐
很好的电子书教程! 什么是 Android? Android是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • 集成的浏览器 基于开源的 WebKit 引擎 • 优化的图形库 包括定制的2D 图形库,3D 图形库基于 OpenGL ES 1.0 (硬件加速可选) • SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和静态图像格式 (如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) • GSM GSM GSM GSM 电话技术 (依赖于硬件) • 蓝牙 Bluetooth, Bluetooth, Bluetooth, Bluetooth, EDGE, EDGE, EDGE, EDGE, 3G, 3G, 3G, 3G, 和 WiFi WiFi WiFi WiFi(依赖于硬件) • 照相机,GPS GPS GPS GPS,指南针,和加速度计(accelerometer accelerometer accelerometer accelerometer) (依赖于硬件) • 丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和 Eclipse 集成开发环境插件 应用程序 Android 会同一系列核心应用程序包一起发布,该应用程序包包括 email 客户端, SMS 短消息程序,日历, 地图,浏览器,联系人管理程序等。所有的应用程序都是使用 JAVA 语言编写的。 应用程序框架 开发人员也可以完全访问核心应用程序所使用的 API 框架。该应用程序的架构设计简化了组件的重用;任何 一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框 架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。 隐藏在每个应用后面的是一系列的服务和系统, 其中包括; • 丰富而又可扩展的视图( Views),可以用来构建应用程序, 它包括列表(lists),网格( grids), 文 本框(text boxes),按 钮 (buttons), 甚至可嵌入的 web 浏览器。 • 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或 者共享它们自己的数据 • 资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。 • 通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。 4 • 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。 程序库 Android 包含一些 C/C++库,这些库能被 Android 系统中不同的组件使用。它们通过 Android 应用程序框架 为开发者提供服务。以下是一些核心库: • 系统 CCCC 库 - 一个从 BSD 继承来的标准 C 系统函数库( libc ), 它是专门为基于 embedded linux 的设备定制的。 • 媒体库 - 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持 静态图像文件。编码格式包括 MPEG4, H.264, MP3,AAC, AMR, JPG, PNG 。 • Surface Surface Surface Surface Manager Manager Manager Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D 和3D 图层的无缝融合。 • LibWebCore LibWebCore LibWebCore LibWebCore - 一个最新的 web 浏览器引擎用,支持 Android 浏览器和一个可嵌入的 web 视图。 • SGL SGL SGL SGL - 底层的2D 图形引擎 • 3D3D3D3D libraries libraries libraries libraries - 基于 OpenGL ES 1.0 APIs 实现;该库可以使用硬件 3D 加速(如果可用)或者使用高 度优化的3D 软加速。 • FreeType FreeType FreeType FreeType -位图(bitmap)和矢量(vector)字体显示。 • SQLite SQLite SQLite SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。 Android Android Android Android 运行库 Android 包括了一个核心库,该核心库提供了 JAVA 编程语言核心库的大多数功能。 每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟 机实例。Dalvik 被设计 成一个设备可以同时高效地运行多个虚拟系统。 Dalvik 虚拟机执行(.dex)的 Dalvik 可执行文件,该格式文 件针对小内存使用做了 优化。同时虚拟机是基于寄存器的,所有的类都经由 JAVA 编译器编译,然后通过 SDK 中 的 "dx" 工具转化成.dex 格式由虚拟机执行。 Dalvik 虚拟机依赖于 linux 内核的一些功能,比如线程机制和底层内存管理机制。 Linux Linux Linux Linux 内核 Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型 。 Linux 内核也同时作为硬件和软件栈之间的抽象层。 5 建立 Android Android Android Android 开发环境 ① 下载 JDK 5 or JDK 6 (JRE alone is not sufficient) ->安装->设置环境变量 JAVA_HOME CLASSPATH path ② 下载 Eclipse 3.3 (Europa), 3.4 (Ganymede) IDE for JAVA->解压 ③ 下载 Android SDK 解压-> path 里加入 SDK 包中的 tools 目录全路径 ④ 下载 ADT 0.8.0 解压 ⑤ 打开 Eclipse 安装 ADT 插件 Android Android Android Android 的系统架构 系统构架 6 支持的功能 + Application framework: 可重用的和可替换的组件部分,在这个层面上,所有的软件都是平等的。 + Dalvik virtul machine: 一个基于 Linux 的虚拟机。 + Integrated browser: 一个基于开源的 WebKit 引擎的浏览器,在应用程序层。 + Optimized graphics: 包含一个自定义的2D 图形库和基于 OpenGL ES 1.0 标准的3D 实现。 + SQLite: 数据库 + Media support: 通用的音频,视频和对各种图片格式的支持(MPEG4, H.264, MP3,AAC, AMR, JPG, PNG, GIF) + GSM Telephony: GSM 移动网络, 硬件支持。 + Bluetooth, EDGE, 3G, and WiFi: 都依赖于硬件支持。 + Camera, GPS, compass, and accelerometer: 都依赖于硬件支持。 + Rich development environment: 包含一套完整的开发工具集,方便跟踪调试,内存检测和性能测试,而且 提供了 Eclipse 的插件。 最底层的是一个 Linux Kernel,加载了几个移动设备必要的系统驱动(这么说来 Android 基础系统是要以 GPL 发布了?不知道 34 家厂商的硬件开发商们是怎么样想的);上面是类库和 Runtime,绿色的类库部分可以看 到大名鼎鼎的 SQLite,这个软件甚至声称自己属于公共领域(比 MIT License 还要强 @@),字体 FreeType 是 BSD-style License 的,图形库 OpenGL ES 只需通过产品测试,无偿使用于产品。再向上看是应用层的东西 了,这里可以做的事情就非常多了,各个社区,各个厂家都可以参与进来。难怪 Android 的 sdk 可以 Apache License 发布了,对企业和开发人员友好啊。 那么 Google 自己的东西在哪里呢?没错,就是右边那个 runtime, 最吸引技术人员的就是这个 runtime(注意,这个才是 Android 的 核 心 )。Google 为它准备了一个虚拟机,叫 做 Dalvik。这个让人摸不着头脑的东西的到底是什么?从开发平台上我们清清楚楚地得到了答案:Java Android Android Android Android 学习方法 ① 了解什么是 Androi ② 建立开发环境 ③ 阅读 SDK 文档 ④ 背景知识 � Java � 面向对象 � 设计模式 � J2ME、Brew 、Symbian
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页