《CoderPig’s Android Pocket》——开篇引言与目录
前言
在写完Android基础入门教程后,有多家出版社曾邀请我写一本Android基础入门
的书,不过都被我一一婉拒了。原因是:这种东西已经写过一遍了,再写一遍对自己
没什么帮助,而且自己也刚进厂没多久,还要熟悉代码,改改BUG啥的。后来前任和
我分手了,原因就不细说了,我也意识到了社会的现实。分手一个多月后,刚好有一
家出版社找到我,说可以直接拿写好的那个入门教程出书,当然里面有些内容是要改
改的,毕竟出版的刊物,不能有低俗的措辞。我并没有立刻决定,而是回家想了一晚,
我在想,写这本书能给我带来什么?我觉得大概是以下两点吧:
- 钱:
结账的方式有两种,一种是一次性买断,按页算,一页30块,卖多少不关你事;
另一种是版税的形式,印刷数 x 书本售价 * 8%,一本书大概赚4,5块的样子
初略算个大概,写一本书也能有将近10K,当然还要扣税之类的。
- 名气:
毕竟写过书,简历上可以加多条:《Android XXX》作者,给人感觉出过书,很厉害;
或者与业内人士交流的时候,说出自己写过书,别人一顿吹捧,牛逼哄哄。
花点时间把教程整理一遍,就能出书,有钱,还能涨名气,10K对于我来说诱惑不小,
那时是,现在也是,毕竟还是拿着微薄的薪水。当然,直接把教程的内容拿来出版,
和博客一模一样,读者会花这个冤枉钱来买这本书吗?当然,可能有一些情怀粉,
硬是要支持小猪,没用也要买一本。我并没有急着去回复联系我的编辑,花了几天,
我去观察自己猪群里的一些初学者的情况,我发现比起传授知识点,更重要的一点是:
技巧!技巧!!技巧!!!
毕竟授之以鱼不如授之以渔,我觉得一个初学者需要了解知道这几点:
- Android 如今的一些情况,有的人什么都不知道,或者不是从事这个行业的,
觉得移动开发很挣钱,然后一股脑的涌进来…- 学习Android开发前的一些准备,硬件环境:一台电脑 + 一部手机;
编程基础:JavaSE,一点XML等等;- Android学习的方向,以及学习路线,有了明确的方向,才不至于晕头转向;
- 学习的过程应该遵循:先模仿,后创造的逻辑,基础的东西没掌握,没学会
走路,就要上天;当你有了一定的技术积累后,再考虑自己去创造一些东西。- 提问的技巧:代码运行或者导入工程处问题了,第一时间不是嚷嚷着出现
问题了,你首先要做的是,自行是靠原因,看可能是哪里引起的问题,当然
还需要掌握相关的调试技巧,打LOG,打断点等;
如果自己解决不了,那就利用搜索引擎,对你的问题或关键字进行查找,开发
者那么多,肯定不止你一个人遇到这样的问题;
如果还是没搜到解决问题的方法,接着就需要找人帮忙解决问题了,找一起
工作的同事或者到群里问,问的时候把日志,相关代码,以及自己觉得的可
能出问题的原因都贴出来,然后等待别人的回到,另外有一点是,提问题的
时候注意礼貌,还有一点要铭记:别人没有义务帮你回答问题,贴了问题很
久或者没人回到,说明:要么没人遇到过,要么会的大神不在?
毕竟大神都要是上班做事,像我这种捞比,上班时候也不会怎么打开群,只是
在编译或者闲暇的时候会打开群看看聊天记录,对没有解答的问题进行解答,
当然是自己能力范围内的问题;
再接着,问人也没有会的话,找个技术交流社区或论坛,发帖留言,静候答复
吧。如果这也没解决问题,我也没辙了,先做其他事咯,说不定回头灵光一闪
就把问题给解了~
6.一些常用的站点要知道:我跟你讲,入门群的,加进来一堆问Android
开发工具是什么?AS在哪里下载?AS怎么安装…等等问题,对于这种环境
相关的问题,我只能说服了,自己写的教程本来就是给新手玩家看的,然后
看也不看,直接群里问这些问题,我还能说什么?Android官网:https://developer.android.com/index.html
AndroidDevTools(开发相关工具下载):http://www.androiddevtools.cn/更多常用站点请到:http://blog.csdn.net/coder_pig/article/details/52438624 自行查看!
然后内容分梯度的,首先,基本的知识点讲解,然后针对很常见的栗子进行剖析,
然后再写一些扩展性的,实际开发中会用到的点。初学者学习完基础的,可以直接
跳过,后面有兴趣再研究扩展部分,或者当成API,有需要的时候再来查这样。
把基本知识点都过完,最后实战做个项目,我不想只是像其他书一样,一个项目写完
就丢在那里,写完就是写完,没一点意义。我希望引入Git版本控制,使用分支管理,
先写一个基于MVC模式的项目,托管到Github上,然后再重构成一个基于MVP模式
的,让读者体会重构的一个过程,以及对架构有初步的了解,当然书本限制,
写两个基本就到头了,但我不想只做到这样。比如我在写一个用了MVVM或者MVVP的
模式的项目,同样托管到Github上,加上Rx,Kotlin,Retroft等。
说这么久,你可能会问:你这本书,出了吗?叫什么?逼逼那么久,我买还不行么?
遗憾的是,这本书,我只写了两章不到,就太监了。原因有如下三点:
- 1.工作上的疲于奔命,磨灭了我对开发的热情,早出晚归,
拖着疲惫的身体回家,还要去看代码,写书,小猪做不到;- 2.自我的懒惰与放纵,以及无用的所谓社交消遣;
- 3.文化与技术水平过低,经常性写不出东西;
综上,留给自己写书的时间可想而知,还有一点是:写着写着我发现自己写成了
一本工具书,而非一本初学者入门指南;为了竟可能的详尽,对于一个知识点,
我总会尽可能地去发散,整理归纳提炼和这个点有关的内容。然后发现,越写
越多,而自己不会的也越来越多。我开始感到焦虑,而且还有一些烦躁不安,
回头审视了下自己,不知不觉做安卓开发也差不多有两个年头了,相比起刚出校门
时有了些许进步,但是和同届的开发者相比差距不是一点半点,有时会感到
很无力,明知道做一件做事情,迫于能力,天赋,环境,也只能达到某个水平,
是一件很无奈的事情…先解决环境的因素吧,不一定要多好,但是至少是自己
喜欢的工作环境,我想每天带着正能量去工作,而不是每天疲于应付,so,
想法是可能是年后会到深圳那边看下机会,毕竟年前还有件最重要的事情,就是
把自己的高数上给过了,接着是把自己手上的项目都完成,大BUG改好,然后都
重构成kotlin版本,也算给我厂留点东西吧,毕竟现在还处在事务总线阶段。
顺便求一波:深圳Android开发相关的内推,毕竟海投我肛不过培训选手,
而且还没拿到学位证,2333
说回这个系列吧,如题,内容是记录小猪Android开发学习相关的点点滴滴,
毕竟要学的东西太多,不可能全部记住,在学习某个知识点后,把总结和心得记下来,
当开发的时候用到或者遇到对应的问题,再回头来查,这样会更加事半功倍,
对自己有利,也能帮助到后来者,何乐而不为呢?尽管可能会有些耗时~
只想到这么多,后面想到再补上,先把大概的纲要列出来,后面再补充~
(玩了几天的Kotlin,感觉非常酷炫,写多了就不想用Java写代码了,
准备先写几节这个,当然,得等我手上的叉分升级先弄好~嘿嘿 )
零.学习Android之前
0.1 Android学习相关站点
0.2 Android开发博客集合
一.常识与概念相关
1.1 背景相关与系统架构
1.2.Android 5.1 源码目录结构与源码阅读相关
1.3 Android系统的启动流程浅析
1.4 Android应用的安装流程浅析
1.5 Android应用的启动流程浅析
二.工具相关
- 2.1 抓包工具
- 2.1.1 Charles 抓包工具的使用
2.1.2 Fiddler 抓包工具的使用
2.2 反编译工具
- 2.2.1 ApkTool + dex2jar + JD-GUI
- 2.2.2 Procyon + Jadx + AndroidDecompiler
- 2.2.3 Google官方反编译工具:ClassyShark
- 2.2.4 Android Killer
2.3 Android Studio使用
2.4 网页工具/插件
2.5 adb命令合集
2.6 Linux命令合集
三.项目规范,结构,代码风格,协作
3.1 Android编码规范
3.2 Git版本控制
3.3 在AS中的使用Lambda表达式(Retrolambda插件)
3.4 异步响应库RxJava
3.5 Android中的Swift——酷炫Kotlin
3.6 MVC
3.7 MVP
3.8 MVVM
3.9 MVPVM
3.10 CleanArchitecture
3.11 AOP(面向切面编程)
四.性能检测与优化
4.1 内存检测与优化
4.2 流畅度检测与优化
4.3 网络优化
4.4 APK安装包瘦身
4.5 单元测试
4.6 自动化测试
五.混淆打包,持续集成,应用分发,插件化,APK叉分升级
- 5.1 Gradle
六.Android UI(User Interface)相关
6.1 布局
6.2 基本UI控件
6.3 V4包中的UI中UI控件
6.4 V7包中的UI控件
6.5 Material Design与Design库
6.6 第三方UI库
6.7 事件分发机制
6.8 Drawable
6.9 Bitmap与图片加载
6.10 Android动画(帧,补间,属性动画)
6.11 自定义View
6.12 屏幕适配
七.Android四大组件,Intent与Fragment
7.1 Activity(活动)
7.2 Service(服务)
7.3 BroadcastReceiver(广播)
7.4 ContentProvider(内容提供者)
7.5 Intent(意图)
7.6 Fragment(碎片)
八.数据存储
8.1 文件存储读写
8.2 SharedPreference保存用户偏好参数
8.3 SQLite数据库
九.网络编程
9.1 Http协议相关
9.2 XML与JSON数据解析
9.3 网络状态获取相关
9.4 文件上传与下载
9.5 网络请求相关的开源库
9.5 WebService调用
9.6 Socket网络编程
9.7 Https
十.Android MultMedia(多媒体)
十一.相关服务与系统参数,杂项
十二.安全相关
十三.地图相关
十四.推送与即时聊天
十五.支付
十六.Wifi相关
十七.蓝牙
十八.Hybrid App
18.1 前端基础
18.2 PhoneGap
18.3 ionic
18.4 React Native