- 作 者
- 郭霖
- 定 价
- 79.00
- 类 别
- 计算机、软件开发、android开发、编程开发、移动终端、程序设计
- 装 帧
- 平装
- 书 名
- 第一行代码(Android)
- 出版时间
- 2014/8
- 开 本
- 800*1000
- 出版社
- 人民邮电出版社
- ISBN
- 978-7-115-36286-5
- 页 数
- 552
-
第一行代码第一章——你的第一行Android代码
2017-12-12 17:05:53对《第一行代码》第一章学习后,进行归纳总结。主要涉及到知识点有:Android系统架构、Android已发布的版本、Android Studio 的下载和开发环境的搭建、新建模拟器、创建Android项目的步骤。第一行代码第一章—你的第一行Android代码
知识点目录
- 1.1 了解全貌——Android王国简介
* 1.1.1 Android系统架构
* 1.1.2 Android已发布的版本
* 1.1.3 Android应用开发特色
- 1.2 手把手带你搭建开发环境
* 1.2.1 准备所需要的工具
* 1.2.2 搭建开发环境
- 1.3 创建你的第一个Android项目
* 1.3.1 创建HelloWorld项目
* 1.3.2 启动模拟器
* 1.3.3 运行HelloWorld
* 1.3.4 分析你的第一个Android程序
* 1.3.5 详解项目中的资源
* 1.3.6 详解build.gradle文件
- 1.4 前行必备——掌握日志工具的使用
* 1.4.1 使用Android的日志工具
* 1.4.2 为什么使用Log而不使用System.out
- 1.5 小结与点评
知识点回顾
1.1 了解全貌——Android王国简介
无知识点
1.1.1 Android系统架构
-
Linux内核层
为Android设备的各种硬件提供底层的驱动
-
系统运行库层
通过一些C/C++库为Android系统提供特性支持;还有Android运行时的库。
-
应用框架层
提供了构建应用程序时可能用到的各种API。
-
应用层
安装在手机上的应用程序
1.1.2 Android已发布的版本
最新数据可以访问如下网址:
https://developer.android.google.cn/about/dashboards/index.html
1.1.3 Android应用开发特色
-
四大组件
Activity、Service、BroadcastReceiver、ContentProvider
-
丰富的系统控件
-
SQLite数据库
-
强大的多媒体
-
地理位置地位
-
and so on
1.2 手把手带你搭建开发环境
无知识点
1.2.1 准备所需要的工具
能翻墙的前提下,到Android官网下载开发工具
https://developer.android.google.cn/studio/index.xml
如果不能翻墙,则到下面的网址去下载。
http://www.androiddevtools.cn/
1.2.3 搭建开发环境
下载Android Studio后,根安装普通软件一样,一路Next即可。
1.3 创建你的第一个Android项目
无知识点
1.3.1 创建HelloWorld项目。
-
打开Android Studio,进入欢迎界面。
-
点击Start a new Android Studio project,进入创建新项目界面
-
进入设置项目的最低兼容版本
-
进入选择模板
-
给活动和布局命名
-
点击Finish按钮,进入到项目创建成功界面。
1.3.2 启动模拟器
点击下图中最左边的按钮就可以创建和启动模拟器。
但个人觉得Android Studio原生的模拟器不是很好用,所以我平时选用的是第三方的genymotion模拟器。
genymotion下载网址如下:
https://www.genymotion.com/account/login/
需要先注册。
1.3.3 运行HelloWorld
-
启动模拟器
-
点击顶部工具栏中的运行按钮
-
在Select Deployment Target选中模拟器,点击OK按钮。
1.3.4 分析你的第一个Android程序
将项目结构模式切换成Project
下面介绍整个项目的外层目录结构。
-
.gradle和.idea
Android Studio自动生成的文件,无需关心
-
app
项目的代码和资源文件
-
build
包含编译时自动生成的文件
-
gradle
包含gradle wrapper的配置文件
-
.gitgnore
将指定的目录或文件排除在版本控制之外
-
build.gradle
项目全局的gradle构建脚本,一般都不需要修改
-
gradle.properties
全局的gradle配置文件,直接影响项目中所有的gradle编译脚本
-
gradlew和gradlew.bat
用来在命令行中执行gradle命令,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用。
-
HelloWorld.iml
iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件,用于标识这是一个IntelliJ IDEA项目,无需修改该文件中的任何内容。
-
local.properties
用于指定本机中SDK的路径,自动生成,无需修改。
-
settings.gradle
指定项目中所有引入的模块
展开app目录:
下面详细介绍下app目录下的内容
-
build
编译时自动生成的文件,无需关心
-
libs
存放第三方jar包,放在该目录下的jar包会自动添加到构建路径中去。
-
androidTest
编写Android Test测试用例,对项目进行一些自动化测试。
-
Java
存放所有Java代码
-
res
存放项目中所有图片、布局、字符串等资源文件
-
AndroidManifest.xml
Android项目配置文件
-
test
编写Unit Test 测试用例,是对项目进行自动化测试的另一种方式
-
.gitgnore
将app模块内指定的目录排除在版本控制之外
-
app.iml
IntelliJ IDEA项目自动生成的文件
-
build.gradle
app模块的gradle构建脚本
-
proguard-rules.pro
指定项目代码的混淆规则
1.3.5 详解项目中的资源文件
无知识点
1.3.6 详解build.gradle文件
最外层目录下的build.gradle文件,代码如下:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
这些代码都是自动生成的,通常情况下不需要修改这个文件中的内容。两处repositories闭包中都声明了jcenter(),jcenter是一个代码托管仓库,从而使得我们在项目中可以引用任何jcenter上的开源项目。dependencies闭包中使用classpath声明了一个Gradle插件,因为Gradle并不是专门为构建Android项目而开发的,Java、C++等很多种项目都可以使用Gradle来构建。如果想要使用Gradle来构建Android项目,则需要声明com.android.tools.build:gradle:2.3.3这个插件,其中,后面是插件的版本号。
app目录下的build.gradle文件,代码如下:
apply plugin: 'com.android.application' android { compileSdkVersion 26 buildToolsVersion "27.0.0" defaultConfig { applicationId "com.example.helloworld" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:26.+' testCompile 'junit:junit:4.12' }
首先第一行应用了一个插件,一般有两种值可选:com.android.application表示这是一个应用程序模块;com.android.library表示是一个库模块。应用程序模块是可以直接运行的,库模块只能作为代码库附于在别的应用程序模块来运行。
android闭包:
compileSdkVersion:指定项目的编译版本。
buildToolsVersion:指定项目构建工具的版本。
defaultConfig闭包:
applicationId:指定项目的包名
minSdkVersion:指定项目最低兼容的Android系统版本
targetSdkVersion:指定项目的目标版本
versionCode:指定项目的版本号
versionName:指定项目的版本名
buildTypes闭包:
通常只会有两个子闭包:debug和release。其中debug闭包可以忽略不写。debug闭包用于指定生成测试版安装文件的配置;release闭包用于指定生成正式版安装文件的配置。
release闭包
minifyEnabled:指定是否对项目的代码进行混淆。
proguardFiles:指定混淆时使用的规则文件。proguard-android.txt是在Android SDK目录下,里面是所有项目通用的混淆规则;proguard-rules.pro是在当前项目的根目录下,里面可以编写当前项目特有的混淆规则。
dependencies闭包
指定当前项目所有的依赖关系。
compile fileTree:声明本地依赖,表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径中。
compile:声明远程依赖。
testCompile:声明测试用例库。
1.4 前行必备——掌握日志工具的使用
无知识点
1.4.1 使用Android的日志工具Log
-
Log.v():打印最为琐碎的、意义最小的日志信息。(verbose)
-
Log.d():打印调试信息。(debug)
-
Log.i():打印重要的日志信息。(info)
-
Log.w():打印一些警告信息。(warn)
-
Log.e():打印程序中的错误信息。(error)
日志等级由低到高:v -> d -> i -> w -> e
运行程序的快捷键
Windows : Shift + F10
Mac : control + R
1.4.2 为什么使用Log而不使用System.out
-
logcat中能添加过滤器
-
可以控制日志级别
1.5 小结与点评
无知识点
- 1.1 了解全貌——Android王国简介
-
我的新书,《第一行代码 Android 第3版》已出版!
2020-04-02 10:13:08《第一行代码——Android》这本书自2014年出版以来,已经过了6个年头了。期间Android系统版本经历了4.0到10.0系统的巨大升级,开发技术也发生了翻天覆地的变化。在2016年的时候,我曾对书中的内容进行了大幅度的更新...《第一行代码——Android》这本书自2014年出版以来,已经过去了6个年头。期间Android系统版本经历了4.0到10.0系统的巨大升级,开发技术也发生了翻天覆地的变化。在2016年的时候,我曾对书中的内容进行了大幅度的更新,出版了这本书的第2版,也就是所谓的《第二行代码》。而如今,再隔4年之久之后,《第三行代码》终于要以全新的面貌跟大家见面了。
创作
不得不说,《第一行代码 第3版》这本书,在出版的过程中经历了太多坎坷,以至于到今天才能跟大家见面。这里先跟所有的读者朋友们说声:对不起,让你们久等了!
早在2017年,Google在I/O大会上宣布Kotlin将成为Android系统的一级开发语言,从此与Java平起平坐。那时我就猜想到,在Android应用层的开发语言将掀起一场大淘汰式的替换。当时图灵出版社也看到了这个新闻,图灵的编辑很快就联系我,问我准不准备写一本Kotlin方面的书?
我认为掌握一门语言是需要时间沉淀的,学语法可能两周就能搞定,但要想体会到精髓,则需要不断通过写代码去磨练和提升。那个时候我不认为我具有写好这样一本书的能力,所以也就没有答应。
长期关注我的朋友应该知道,在这之后的一年多时间里,我把时间基本都放在了GifFun这个开源项目上面。这个项目一开始是使用Java来写的,中途被我切换成了Kotlin。因为我知道,要想熟练掌握一门语言,最好的方式就是不断用它来写代码。我也就借此机会,对Kotlin有了更加深刻的理解。
到了2019年,我和出版社又重新进行了商讨,准备对《第一行代码》再度更新,推出第3版,这次会将全书的代码都改用Kotlin来实现。但问题在于,Kotlin作为一门新兴语言,程序员基数远不可能有Java那样庞大。如果换了语言之后导致大量读者看不懂怎么办?
当时出版社提出了一个方案,让我单独再写一本专门讲解Kotlin语言的书,和《第一行代码》配套使用。不过我认为这个方案会提升《第一行代码 第3版》的阅读门槛,就没有答应。
几经思考之后,我认为想出了一个最佳的写作方案:在一本书里面同时讲解Android和Kotlin这两门技术。这也将会是《第一行代码》中首次引入编程语言的讲解。
但如何安排这两门技术之间的内容顺序是一件非常有挑战的事情。因为Kotlin是Android程序的开发语言,很显然需要先掌握语言才能开发Android程序。可是如果先花小半本书的篇幅讲解Kotlin,然后再开始学习Android开发,这种学习方式一定非常枯燥,因为学编程语言最怕的就是光学不练。
为此,我决定采用一种或许别人从未尝试过的方式,将Kotlin和Android穿插在一起讲解。首先使用一个快速入门章节介绍Kotlin的基础知识,然后利用已掌握的知识开始学习Android开发,这样可以做到立刻上手实践。之后的每一章当中,都会结合相当章节的Android内容再学习一些Kotlin的进阶知识,等学完整本书之后,你就能同时熟练地掌握Android和Kotlin这两门技术了。
这种穿插讲解的方式非常考验我的内容设计能力,因为每章的Android开发中用到的Kotlin知识不能过于超前,不然读者会出现看不懂的情况。同时每章讲解的Kotlin知识又要结合着相应章节的Android知识,这样才能更好地理解该知识点的用法与场景。它们之间的内容是相辅相成的。
为此,在前期制订目录上面我就花了将近一个月的时间,之后编写Kotlin快速入门这一章又花了两个多月的时间。因为我以前从来没有写过编程语言类的书,为了把Kotlin重要的基础知识在这一章里面都体现出来,我花费了很多心思。在编写这一章的过程中,Google I/O 2019大会上正式宣布了Kotlin First的口号,Kotlin已经不再和Java是平起平坐,而是变成一等公民了。虽然这是我意料之中的事情,但是比我预期来得要早,也让我更加坚定了写好这本书的信心。
《第一行代码 第2版》是2016年3月份开始动笔的,同年9月份完稿,12月份出版。《第一行代码 第3版》是2019年3月份开始动笔的,但是9月份却远远无法完稿,因为改动内容和新增内容要远比第2版时大得多。我几乎把所有的业余时间都放在了上面,最终在11月底才勉强全书完稿。
本来是想着好事多磨,好书也不怕晚出版几个月,过完年应该就可以跟大家见面了。没想到,我们恰好碰上了一场从未遇到过的疫情灾难,包括17年前的SARS也没有今天的新冠疫情严重。
这场疫情导致中国各方面都受到了极大的创伤,学校停课,企业停工,大家都只能呆在家里,不出门就是最安全的。而受疫情的影响,出版社、印刷厂都延迟上班,无法复工。我每天在公众号中都会被读者追问,新书到底什么时候可以出版?这个问题我当时真的无法回答,疫情所带来的影响要持续到何时真的没人知道。
后来到了三月份,国内的疫情已经逐渐控制住,多数企业也在慢慢复工复产了,这本书才终于能够得以出版印刷。但是,虽然国内的疫情已经缓和,海外疫情却紧接着爆发了起来,截至到我写本篇文章时也没有任何缓和的迹象。现在仍然不知道这场疫情给全球带来的影响要持续到何时,我真心希望你在阅读这篇文章时,新冠已经成为了过去式,每个人都恢复到了正常的生活当中。
经过了如此多磨难才诞生的这本书,希望能给大家送去更多的知识吧。
变化
我相信一定会有很多读者朋友都想问一个问题:《第一行代码 第3版》相比于《第一行代码 第2版》具体有哪些变化呢?在这里我就向大家详细地介绍一下主要的变化部分。
首先是编程语言上的改变,本书前两版都是使用Java作为应用程序的编程语言,而第3版使用了Kotlin,这也是目前Google最推荐我们使用的编程语言。
本书的前两版中也没有涉及过语言方面的讲解,默认读者是有Java语言基础的。而第3版中对Kotlin语言进行了非常全面的讲解,不需要读者有任何Kotlin语言的基础。
另外你需要知道,《第一行代码 第3版》是一本升级版的书,而不是一本全新的书,因此书中整体的知识架构仍然和《第一行代码 第2版》是保持一致的。
虽然整体知识架构不变,但还是涉及了一些章节上的变动。
第3版中移除了之前第2版中的11、15两章内容。这两章内容分别讲解的是LBS开发、以及App上架。
LBS开发其实主要讲解的都是百度地图SDK的用法,但是百度地图SDK很可能会频繁更新,而书中的内容却是不能随意改变的,所以我认为这部分内容更应该去百度地图的开发者官网进行学习。
至于App上架主要讲解的是360应用商店的上架过程,由于现在国内的App上架已经变得非常复杂,个人开发者都需要专门去申请软件著作权才能将自己开发的App上架到应用商店,书中的内容已经不再适用,所以也进行了移除。
而第3版中新增了三章内容,分别是第2章、第13章和第16章。
第2章就是之前提到的Kotlin快速入门章节,这一章将会带你迅速上手Kotlin编程,讲解了如变量、函数、逻辑控制、面向对象编程、Lambda编程、空指针检查等Kotlin中最基础、同时也是最核心的知识点。学完了这一章内容之后,你就可以使用Kotlin来编写一些Android程序了。
第13章是专门讲解Jetpack的一个章节。Jetpack是Google于近年推出的一个开发组件工具集,旨在帮助我们编写出更加符合高质量代码规范、更加具有架构设计的应用程序。是的,现在我们已经不能停留在实现功能就万事大吉的层面了,而是要在实现功能的同时,追求更高的代码质量和架构设计。第13章中讲解了ViewModel、Lifecycles、LiveData、Room、WorkManager等内容,基本涵盖了Jetpack架构模块当中最主要的一些组件。
第16章是第3版中新补充的一个实战章节。本书的前两版中都只有一个实战章节,而第3版中会有两个实战章节。不同于过去的App开发实战,第16章会带你一起编写并发布一个开源库。因为我之前也写过几个比较知名的开源项目,并且我在公司的主要工作就是SDK方面的研发,所以其实我很擅长写这部分内容。还有什么事情是比在别人的项目中看到引用了自己的开源库更让人激动的呢?
介绍完了整体章节上的变动,我们再来看一些具体内容上的变化。
为了响应Google的Kotlin First号召,第3版中将全书所有的代码都改成了使用Kotlin语言来进行实现,Android的持续Kotlin化也是未来长期发展的必然趋势。不过,由于新增的第2章只是讲解了一些Kotlin的基础内容,为了能够让你更加全面地掌握Kotlin方方面面的知识,第3版几乎在每一章的最后都加入了一个Kotlin课堂的环节。全书一共有12节Kotlin课堂,全面涵盖了诸如常用技巧、高阶函数、泛型、协程、DSL等等语言层面的知识,绝对足以让你熟练掌握Kotlin这门语言了。
除了在编程语言方面存在大量的变动之外,Android开发方面当然也不会一成不变。自《第一行代码 第2版》出版之后,Android又经历了8 9 10系统的快速迭代。每个新系统版本中都会增加一些崭新的特性,也都需要进行一些开发方面的适配,第3版将这些内容全部涵盖了进去。
另外,近些年来追求架构设计的开发者越来越多,类似MVP、MVVM等架构的使用也越来越广泛,传统的MVC架构逐渐在被抛弃。第3版的第15章中对MVVM架构进行了非常详细的讲解,并且配合着Google提供的Jetpack组件,最终完成了一个MVVM架构的天气预报程序。虽然这个天气预报程序我已经写了3版了,但是这次将会是最具架构性,也最符合高质量编码规范的版本。相信会对你未来开发公司的实际项目带来很大的帮助。
除了上述主要变化之外,还有许多小细节方面的变动这里就不一一列举了,等待你自己阅读的时候发现吧。
设计
虽说这是一本升级版的书,可我花费在上面的时间和精力丝毫不亚于写一本新书。所以,不管是在内容方面还是在设计方面,我都希望它和第2版能够有着更加明显的区别。因此,图灵的设计师们这次也辛苦了。
首先是封面的设计,和第2版时一样,这次第3版的封面也是由图灵的设计师做出了几个版本,然后我在公众号上发起了一个投票,让广大读者朋友们共同选出最满意封面,投票结果如下:
最后蓝色封面以压倒性的优势当选,《第一行代码》也终于把红绿蓝这三元色全部凑齐了。第3版的封面正式确定:
然后是书签,第2版中首次在书里附赠了书签,那么第3版当然会把这个好传统继续坚持下去了。书签的设计应该尽可能地展现出一本书的特点,而我认为《第一行代码 第3版》最大的特点就是两部分:Android 10和Kotlin。所以我也让设计师专门为这两个主题设计了两种书签,我们来一起欣赏一下吧:
每本书中都会赠送这两个书签,虽然一本书送两个书签可能有点多余,但我觉得这会给人一种更加完整的感觉。
除此之外,第3版中还首次提供了全书知识架构的思维导图。这是我根据书中主要知识点进行整理,并由本书编辑张霞绘制出来的,共分为Android和Kotlin两张图。
思维导图可以方便你纵览本书Android和Kotlin的宏观图景,帮助你梳理各章的知识要点。
Android的思维导图如下:
Kotlin的思维导图如下:
这两张思维导图都会以彩页的形式装订在书中,方便你随时查看。
最后是给高校老师们的福音,由于本书前两版被大量高校当作教材使用,这次为了便于高校老师和培训机构教学,第3版中专门配备了相应的PPT课件。在书中的前言部分附有所有随书资源的下载地址。
定价
我之前发现有部分读者朋友对书的定价方式是有误解的,所以这里先来科普一下。
任何一本书,都是要以成本为依据来定价的,而不是内容。成本指的主要是这本书印刷所需花费的费用,所以页数多的书一定比页数少的书贵,彩色页的书一定比黑白页的书贵。
在我之前的一篇文章中,有些读者留言,认为一本书应该是根据内容的好坏来定价,其实这是不可能的。也许会存在一些好书因为口碑特别好而提高定价,但一定不会存在一本差书因为自我感觉内容比较差而主动降低定价。
由于《第一行代码 第3版》新增了许多Kotlin方面的知识讲解,书的总页数也从第2版时的500多页变成了现在的700多页,所以涨价是在所难免的事情。
一开始本书编辑张霞建议将第3版售价定为99元,我觉得相比于第2版的79元涨幅有点高,问她可不可以降低到89元。她告诉我,700多页的书定价89元有很大概率会被出版社打回,但她仍然以这个价格上报了试试。果不其然,最终这个定价审核没有通过,因为市面上700多页的书定价都至少在100元以上。
最终我也做出了让步,同意将第3版定价为99元,至少控制在了百元以内。不过这仅仅只是书的定价,而通常我们在网上买书都是有折扣的。具体折扣的多少由各网店自己决定,我参与不了,但一般也就是七八十块钱就能买到了。
购买
了解了这么多,不知道你有没有决定要买一本呢?目前《第一行代码 第3版》已经在京东、当当等网上书店开启预售了,限量签名版先到先得,有需要的小伙伴们请点击下面的链接。另外全书的完整目录,也可以到下面的链接页面进行查看。
关注我的技术公众号,每天都有优质技术文章推送。
微信扫一扫下方二维码即可关注:
-
历时一年,我的著作《第一行代码——Android》已出版!
2014-07-17 09:13:42其实我当初决定开始写博客的想法挺简单的,觉得自己搞技术这么多年...更令我没想到的事,在我开始写博客不久之后,人民邮电出版社图灵公司的副总编辑陈冰老师就联系上了我,希望我可以写一本关于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代码(一)
2020-04-29 20:14:15第一章 开始启程,你的第一行Android代码1.1.Android简介 1.1.1.Android系统架构 自下而上:Linux内核层(为硬件提供底层驱动。eg:显示驱动、音频驱动等)、系统运行时层(C/C++库和android运行时库,前者有Sqlite...1.1.Android简介
1.1.1.Android系统架构
自下而上:Linux内核层(为硬件提供底层驱动。eg:显示驱动、音频驱动等)、系统运行时层(C/C++库和android运行时库,前者有Sqlite和OpenGL等,后者有ART虚拟机和核心库等)、应用框架层(系统API,譬如ActivityManager、WindowManager、ContentProvider)、应用层(应用程序,譬如联系人、短信、自己开发的app等)。
2020.3月逐渐推出Android 11版本。5.0使用ART虚拟机代替DVM虚拟机,提出Material Design来优化界面设计,5.0以上占比超过85%。
1.1.2.Android应用开发特色
(1)四大组件:Activity、Service、BroadcastReceiver、ContentProvider。Activity是应用程序显示的界面;Service后台默默运行,即使用户退出app;BroadcastReceiver使得app接受各处广播消息,也可以向外发出消息;ContentProvider可以使得app之间的数据共享。譬如:读取联系人;
(2)丰富系统控件:Android界面系统控件和自定义控件。
(3)SQLite数据库:轻量级、运算速度极快的嵌入式关系型数据库。支持SQL语法和系统API。
(4)强大多媒体:音乐、视频、录音、拍照等。
1.2.搭建开发环境
JDK(java运行环境、工具集合、基础类库)+SDK(android开发工具包)+Android studio
1.3.创建Android项目
1.3.1.文件结构解析
1.build:编译自动生成的文件
2.gradle:gradle wrapper配置文件
3..gitignore:哪些文件排除在版本控制之外
4.Build.gradle:项目全局gradle脚本
5.Grale.properties:全局gradle配置文件,配置相关属性
6.gradlew和gradlew.bat:命令行界面执行gradle命令
7.Local.properties:本机SDK路径
8.Setting.gradle:制定项目所有引入的模块,目前只有app模块
9.app目录:项目代码、资源
9.1.build:系统自动生成文件
9.2.libs:第三方jar包
9.3.androiTest:Android test自动化测试用例
9.4.Java:所有java代码放置地方,MainActivity.java
9.5.res:图片、布局、字符串等
9.6.AndroidManifest.xml:项目配置文件,譬如四大组件的定义
9.7.Test:unit test自动化测试用例
9.8.Build.gradle:app模块的gradle构建样本,项目构建相关配置
9.9.Progurad-reles.pro:执行项目混淆规则
10.res目录:图片、布局、字符串等
10.1.drawable:图片
10.2.Mipmap:图标(不同后缀更好兼容设备)
10.3.Vaules:字符串、样式、颜色等。以下为values的内容
通过R.string.app_name或者@string/app_name获得该字符串的引用。
1.3.2.详解build.gradle文件
最外层目录的build.gradle//Gradle是基于Groovy领域特定语言(DSL)来进行项目设置的。 buildscript { ext.kotlin_version = '1.3.71' //闭包声明了两个代码仓库 repositories { google() //google扩展依赖库 jcenter()//第三方开源库 } //使用classpath声明了两个插件 dependencies { //Gradle插件的目的是构建android项目,与AS版本一致 classpath 'com.android.tools.build:gradle:3.6.3' //Kotlin插件 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() jcenter() } }
app目录的build.gradle
apply plugin: 'com.android.application'//应用程序模块,也可以设置为库模块 apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions'//kotlin模块和扩展功能 //项目构建的各个属性 android { compileSdkVersion 28 //指定项目编译版本 buildToolsVersion "29.0.3" //Android10.0SDK编译 //项目更多细节配置 defaultConfig { applicationId "com.example.myapplication"//应用唯一标识符 minSdkVersion 21///项目最低兼容版本,最低兼容5.0 targetSdkVersion 28//目标版本,在该版本充分测试,启用新特性,9.0 versionCode 1 //项目版本号 versionName "1.0"//项目版本名 //启用Junit测试用例 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } //生成安装文件的相关配置 buildTypes { //一般一个release包(正式版安装文件配置),一个debug包(测试版安装文件配置)。 release { minifyEnabled false//是否对项目混淆 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' //选择混淆规则 } } } //指定项目所有依赖关系。本地依赖(jar包或者目录)、库依赖(项目中的库模块)和远程依赖(jcenter仓库开源项目)。 dependencies { //implementation fileTree本地依赖,libs目录底下的所有jar包 implementation fileTree(dir: 'libs', include: ['*.jar']) //implementation远程依赖声明,标准远程库格式,androidx.appcompat:为域名部分,appcompat为工程名,1.0.2是版本号 //Gradle构建时会检查本地是否有库缓存,没有会自动联网下载并添加到项目构建路径 implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.core:core-ktx:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' //implementation project是库依赖,譬如一个库名叫help,可以声明为(implementation project('help')) //声明测试用例库的 testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' }
1.4.日志工具
Android中日志工具类是log。五个级别:log.v(verbose,琐碎的、意义最小的信息)、log.d(debug,调试信息)、log.i(info,重要信息,譬如分析用户数据行为信息)、log.w(warn,警告信息,潜在风险需要修复)、log.e(error,错误信息)。譬如:Log.d("MainActivity1","onCreate Create")。一个tag是传入当前类名,一个msg是打印具体内容。打印内容包括时间、进程号、类名和内容等。Logv可以看所有log信息。Logd可以看debug及以上级别的信息,依次类推。
System.out.println相较于log,日志开关不可控、没有级别划分、不能添加日志标签。有四个过滤器。Show only selected applications显示当前选中程序的日志;firebase是开发者工具和基础架构平台,不用管。No filter没有过滤器,所有日志都会显示;edit fileter config自定义过滤器。 -
第一行代码 第三版 电子版_第一行代码第三版赠书来了!
2020-12-10 16:21:47还记得在《第二行代码》出版的时候,我也给大家送了一些书。不知道有没有同学记得,那会是 16 年 12 月,也是我毕业那一年,刚来北京工作半年。这几年我和郭神依然保持着足够的吹逼时间,我们俩都朝着自己的一些小... -
Android第一行代码踩坑qwq
2020-08-13 13:23:44Android第一行代码踩坑qwq涉及到需要更新或者更换的方法 -
第一行代码——Android pdf
2018-11-14 18:42:55第一行代码——Android pdf -
第一行代码——第一章:你的第一行Android代码
2018-11-21 17:22:58目录: 1.1 了解全貌——Android王国简介 1.1.1 Android 系统架构 1.1.1 Android 已发布版本 1.1.3 Android 应用开发特色...1.3 创建你的第一个Android项目 1.3.1 创建HelloWorld项目 1.3.2 启动模拟器 1.3.3... -
第一行代码第2版pdf
2019-10-06 17:15:53第一行代码pdf [网盘 密码:u7fc] (https://pan.baidu.com/s/1qrEVJ1hx8iTDEzEfysUqKw) -
Java第一行代码
2018-09-26 23:14:50代码块 内部类 第四章 面对对象高级知识 继承 覆写 final关键字 多态性 抽象类 Object 基本数据类型的包装类 第五章 包及访问控制权限 包的一些操作 jar命令 访问控制权限 单例模式和多例模式... -
第一行代码第二版目录
2018-02-13 17:27:04第一行代码第二版目录 本文说明:为了让安卓工程师扫盲、回忆过去 第1章 开始启程——你的第一行Android代码 1 1.1 了解全貌——Android王国简介 2 1.1.1 Android系统架构 2 1.1.2 Android已发布的... -
拜读郭霖大神《第一行代码——第二版》笔记——你的第一行代码
2017-05-21 16:08:17用三个月的时间断断续续终于拜读完郭霖大神的《第一行代码——第二版》,从一个hello world的菜鸟,跟随书中一步一个脚印,到如今对android能有一个大概的理解。现在回过头看,那些曾经陌生的变得有些熟悉了,而... -
第二行代码学习笔记——第一章:开始启程——你的第一行Android代码
2017-04-23 14:35:31坚持写一系列关于第二行代码的学习笔记,一是来提升自己的学习能力,坚持每天学习; 二是给自己整理一份资料,方便以后的查阅与复习。希望能够帮助到更多的小伙伴们:Android系统是目前世界上市场占有率最高的移动操作... -
《第一行代码第三版》总结篇
2020-05-02 18:05:16今年4月郭霖大佬出版了新书《第一行代码》第三版,与前几版不同的是以下几点:(1)编程语言基于Kotlin;(2)基于Android10.0开发;(3)提到JetPack、Retrofit、MVVM等全新的知识点。一方面学校因为疫情原因迟迟不... -
第一行代码第二版(郭霖著)笔记之第一章(你的第一行Android代码)
2017-03-03 15:32:59第一行代码(第二版)第一章主要介绍了Android系统架构、重要版本、应用开发特色以及详细讲解了如何创建第一个Android项目和如何创建模拟器,还详细讲解了AndroidStudio项目下比较重要的目录结构知识以及如何使用... -
看一看Facebook工程师是怎么评价《第一行代码》的
2019-08-16 07:56:50大家好,我是一名Facebook的工程师,同时也是《第一行代码——Android》的忠实读者。 虽然我最近几年是在国外读书和工作的,但是和很多人一样,我也非常喜欢郭霖的博客以及他写的《第一行代码——Android》。 事实... -
《第一行代码》完结篇
2019-06-17 15:14:04《第一行代码》是Android入门的第一本书籍,刚开始接触是在17年10月份,那时重点关注了几个章节:Activity、ContentProvider、Service、BroadcastReceiver以及SQLite,在那个时候开始对Android开发产生了一定的兴趣... -
Kotlin的第一行代码
2017-05-22 17:33:29第一行代码hello world 作为程序员的传统,当我们第一次接触某种语言时,都会先写出hello world,接下来我们便开始尝试实现这个最简单的kotlin APP。 首先,Module层的gradle中添加一行配置,然后再次通过Sync... -
《第一行代码》读书笔记(二)
2020-03-14 20:34:48《第一行代码》读书笔记(二)《第一行代码》读书笔记(二)5.2 开机广播不响应问题6.2 Android Device Monitor找不到使用旧有的monitor使用新添加的工具LitePal依赖6.5 DataSupport类DataSupport类找不到deleteAll... -
第一行代码勘误
2016-12-09 09:40:52第7行,public class SwipeRefreshLayout swipeRefresh下方新增一行代码: private String mWeatherId; 第18行,final String weatherId;删除。 if else语句中的 weatherId 改为 mWeatherId。 ... -
第一行代码 第二版pdf及源码(分享)
2018-08-31 01:16:53这里写链接内容 -
Android 第一行代码(第2版).pdf 网盘
2019-05-15 09:20:47Android第一行代码(第2版).pdfhttps://pan.baidu.com/s/1LaLTBiNlpK4XybROoSUPbg -
《第一行代码——Android》封面诞生记
2014-08-28 09:04:28《第一行代码——Android》已经上市快一个月了,目前销售情况还算良好,也是特别感谢众多朋友的支持。其实一本书如果想要卖的好,除了内容必须要给力之外,封面的设计也是至关重要的,而本书的封面无疑是在充实的... -
《第一行代码 Android 第2版》下载
2018-11-02 14:08:44《第一行代码 Android 第2版》 https://pan.baidu.com/s/1B718h7h3601iEe8gIN9oAQ -
HTML基础编程——简介及第一行代码
2020-08-25 14:44:05HTML基础编程——简介及第一行代码 超文本标记语言(英语:HyperText ... ... 第一行代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>helloworld</title> </ -
《第一行代码——Android》
2015-06-17 09:06:31《第一行代码——Android》是Android初学者的最佳入门书。全书由浅入深、系统全面地讲解了Android软件开发的方方面面。 -
Android实战项目:第一行代码CoolWeather
2018-11-27 21:25:10第一行代码&gt;&gt; 项目地址WeatherDemo:https://github.com/Tian-Zhen-Yin/WeatherDemo 项目分包: 依赖: dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) ... -
第一行安卓代码
2016-05-27 12:27:13想学习安卓的同学,以后跟帖,我会每天不定时的去更新代码,QQ群:5521238311、首先我们得搭载环境: 我这里用的是eclipse+JDK1.7 下载地址360云盘: https://yunpan.cn/cSEwSInpfCbZQ 访问密码 e0e5下载完成... -
第一行代码Android学习(十一)
2016-08-29 08:58:03第一行代码Android学习:第十一部分主要涉及到WebView、Http协议访问网络、解析JSON格式数据、LocationManager的基本用法