或许对大多数人来说,这本书有点老,基于Android4.X。
但是对一些新手菜鸟(like I do),这本书是一本入门必读书。
所以在此,记录一下自己的学习过程,每日一章,Keep it up。
郭神CSDN博客
刚看到郭大神换了CSDN博客头像,恭喜郭大神步入婚姻殿堂。
祝:永结同心,百年好合!新婚愉快,甜甜蜜蜜!哈哈。。。。
本人第一次认认真真的写Blog,如果有不足之处或者是写错写漏的地方望指出。
转载请注明出处://www.greatytc.com/p/7ab25e095568
我挥舞着键盘和本子,发誓要把世界写个明明白白。
种一棵树最好的时间是十年前,其次,就是现在。
第一章 开始启程,你的第一行Android代码
-
Android 系统架构
1.Linux内核层(Linux kernel)
Android系统是基于Linux2.6内核的,这一层是为Android设备的各种硬件提供了底层的驱动。如:显示驱动,音频驱动,照相机驱动,蓝牙驱动,WiFi驱动,电源管理等。
2.系统运行库层(Libraries)
这一层通过一些C/C++库来为Android系统提供了主要的特性支持。
如:SQLite库提供了数据库的支持,OpenGL|ES库提供了3D绘图的支持,WebKit库提供了浏览器内核的支持等。
这一层还有Android运行时库(Android Runtime),它主要提供了一些核心库,允许开发者中Java语言来编写Android应用。另外,它包含了Dalvik虚拟机,Dalvik使得每个Android应用都能运行在独立的进程当中,默认内存16MB。
3.应用框架层(Application Framework)
主要提供了构建应用程序时可能用到的各种API。(所谓的源码,就是这些API了吧!再往下Libraries和LinuxKernel的源码,给我看我也看不懂!)
4.应用层(Applications)
所有安装在手机上的应用程序都是属于这一层,包括系统自带的联系人,短信,音乐等。还有你自己开发的应用程序。
-
Android 已发布的版本(这个表格是我自己网上下载统计的,至2016年3月)
PlatForm Version | API Level(版本等级) | Version Code(版本代号) |
---|---|---|
Android 6.0 | API 23 | Marshmallow(棉花糖) |
Android 5.1 | API 22 | Lollipop(棒棒糖) |
Android 5.0 | API 21 | Lollipop(棒棒糖) |
Android 4.4W | API 20 | KitKat(奇巧巧克力棒) |
Android 4.4 | API 19 | KitKat(奇巧巧克力棒) |
Android 4.3 | API 18 | Jelly Bean(果冻豆) |
Android 4.2 | API 17 | Jelly Bean(果冻豆) |
Android 4.1 | API 16 | Jelly Bean(果冻豆) |
Android 4.0.3 - 4.0.4 | API 15 | Ice Cream Sandwich(冰激凌三明治) |
Android 4.0 - 4.0.2 | API 14 | Ice Cream Sandwich(冰激凌三明治) |
Android 3.2 | API 13 | Honeycomb(蜂巢) |
Android 3.1 | API 12 | Honeycomb(蜂巢) |
Android 3.0 | API 11 | Honeycomb(蜂巢) |
Android 2.3.3-2.3.7 | API 10 | Gingerbread(姜饼) |
Android 2.3 - 2.3.2 | API 9 | Gingerbread(姜饼) |
Android 2.2 - 2.2.3 | API 8 | Froyo(冻酸奶) |
Android 2.1 | API 7 | Éclair(闪电泡芙、松饼、法式奶油夹心甜点) |
Android 2.0.1 | API 6 | Éclair(闪电泡芙、松饼、法式奶油夹心甜点) |
Android 2.0 | API 5 | Éclair(闪电泡芙、松饼、法式奶油夹心甜点) |
Android 1.6 | API 4 | Donut(甜甜圈) |
Android 1.5 | API 3 | Cupcake(纸杯蛋糕) |
Android 1.1 | API 2 | (Bender“发条机器人”) PetitFour((法)小蛋糕) |
Android 1.0 | API 1 | (Astro“铁臂阿童木”) 没有开发代号 |
在这贴两张图,是2016年谷歌官方给出的占比分布图
然后有两个数据是大家需要知道的:
- Android 6.0 Marshmallow市场份额仅用一个月从0.7%涨到占比为1.2%,增幅达到了0.5%。
- Android Lollipop的市场占比从34.1%下滑至32.6%。
就是说,你需要了解最新版本,你需要时刻知道Android官网又干了什么。
手机市场2016年1月各个系统占比:
你要知道ios虽然现在比例不大,但终究是在慢慢增长。因为中国人都有钱了,需要一个流畅的装逼手机。(作为一个程序员,不能吊死一棵树上!哈哈。。。)
Android应用开发特色(其实除了四大组建,别的都不算是特色吧!)
1.四大组件
Android系统提供的四大组件分别是:
- Activity(活动)
- Service(服务)
- Broadcase Receiver(广播接收器)
- Content Provider(内容提供者)
这是作为一个Android程序员必须要精通的东西,哎,小鸟我也就Activity理解的比较好一些,别的都一塌糊涂。Keep it up。
2.丰富的系统控件
就是自定义控件或者组件,需要对View有足够的认识。我的短板呀!!!
3.SQLite 数据库
这部分也是我的短板,作为一个程序员,数据库不得知道好几个?什么MYSQL,ORACLE,SQL Server,还有这个轻量级的SQLite。短板太多,这水全漏了。。。。
4.地理位置定位
手机最有特点的功能。需要了解百度SDK,高德SDK,腾讯SDK等。
5.强大的多媒体
Linux内核给了它那么多驱动,这些东西不是必须得有?
6.传感器
这些算是手机厂商给提供的硬件和驱动吧,我是这么理解的。
开发环境搭建(这部分就略过了)
Android主流开发环境(IDE)有Android Studio和 Eclipse
需要说一下的是:
- 谷歌已经不在给Eclipse提供支持,就是说,以后可能所有Android程序员都要转用谷歌亲儿子Android Studio这款IDE来开发Android应用。(这么牛逼一个公司,一直以插件ADT的形式混在别人的IDE中确实挺丢人,哈哈。。。)
- Android Studio书中没有介绍,不过网上还是有很多教程的,建议大家找最新的。还有对Gradle的理解要深入,我是就会用,还真是不太理解。给Gradle的导包过程一个赞,一行代码搞定!
- 这两个IDE最终还是需要JAVA JDK的支持,这个东西,必须得会!
面试中经常问道的一个问题,Android目录结构的解析。现在大多数都是Eclipse目录结构的详细解析,我这里就不写Eclipse的了。
这里重点说一下Android Studio的目录结构:
Android Studio提供了好几种目录结构类型
我们常用到的是Project结构类型和Android结构类型
-
Project结构类型:
- app/build/ app模块build编译输出的目录
- app/build.gradle app模块的gradle编译文件
- app/app.iml app模块的配置文件
- app/proguard-rules.pro app模块proguard文件
- build.gradle 项目的gradle编译文件
- settings.gradle 定义项目包含哪些模块
- gradlew 编译脚本,可以在命令行执行打包
- local.properties 配置SDK/NDK
- MyApplication.iml 项目的配置文件
- External Libraries 项目依赖的Lib, 编译时自动下载的
-
Android结构类型:
- app/manifests AndroidManifest.xml配置文件目录
- app/java 源码目录
- app/res 资源文件目录
- Gradle Scripts gradle编译相关的脚本
前行必备,掌握日志工具的使用(日志在Eclipse和Android Studio中都是比较重要的)
Android Studio中LogCat是在最底下Android Monitor栏中
LogCat需要知道的是怎么用它的过滤器,过滤自己需要的日志。
第一次写技术博客,有不足之处,望大家多体谅(谁没有过第一次啊!是吧,哈哈。。)
Android 书单
- 第一行代码 Android
- Android 编程权威指南
- Android 4 高级编程(第三版)
我打算看完这三本书,并每章都写笔记,发到博客上。如果有正在看的朋友,可以一起探讨。