最近买入了郭霖大神的第二行代码,准备系统的梳理一下自己的Android知识体系。因为之前都是项目中用到什么就学什么,比较分散,学的东西也是零散的。希望通过这次学习能够将自己之前的知识串联起来,形成自己的一个知识体系。计划写这一个该书笔记的系列博客,一是为了督促自己每天抽出时间来学习,二也是为自己留一份资料,方便以后查阅复习。 既然决定写博客就要尽力坚持下去,而且保证质量,让博客不仅仅是书中内容的摘抄,而是尽可能的加入自己的理解,写好每一个书中的Demo。接下来进入正文:
Android整体的介绍,开发环境的配置,Android Studio安装使用,Android Studio中项目结构, Android日志工具
Android系统架构分为四层: (1) Linux内核层: Android系统基于Linux内核。 为Android硬件设备提供底层驱动,例如显示驱动,音频驱动,照相机驱动等; (2)系统运行库层: 通过C/C++库为Android系统提供特性支持。例如:SQLite库提供数据库支持,Webkit库提供浏览器内核支持。 该层还有Android运行时库,提供核心库,允许用Java语言开发Android应用。Android运行时库还包含Dalvik虚拟机(5.0后是ART运行环境)。 (3)应用框架层: 提供各种API (4)应用层: 手机中所有的应用程序,我们的开发就是在这一层
Android至今为止已经发布到7.1版本,对应API版本为25。通常开发最低版本为4.0,对应API为15。
Android系统为我们提供了那些东西,用来开发。 (1) 四大组件(待详细补充) Activity(活动), Service(服务), BroadCast Receiver(广播接收者), Content Provider(内容提供者)
(2)丰富的系统控件
(3)SQLite数据库
(4)强大的多媒体 例如 音乐,视频,照相,录音,闹铃等
(5)地理位置定位
JDK:Java语言的软件开发工具包(包含Java的运行环境,工具集合,基础类库等内容)
Android SDK:Android开发工具包
Android Studio:Android编译器
Android Studio是采用Gradle构建项目的,Gradle是一个非常先进的项目构建工具。 最外层builde.gradle文件
(1) repositories闭包 jcenter():代码托管仓库,很多Android开源项目将代码托管到jcenter,声明这行配置后,可以方便的引用开源项目。 (2) dependencies闭包 使用classpath声明了一个Gradle插件。使用这个插件来让Gradle构建Android项目,因为Gradle并不是专门为构建Android项目来开发的,Java,C++等项目也可以用Gradle来构建。 app目录下的build.gradle文件
(1) 第一行应用了一个插件 一般有两种值可选: com.android.application一个应用程序模块 com.android.library表示这是一个库模块 (2) android闭包 配置项目的各种属性 compileSdkVersion:用于指定项目的编译版本 buildToolsVersion:用于指定项目构建工具版本 (3) defaultConfig闭包 applicationId:指定项目包名 minSdkVersion:最低兼容版本 targetSdkVersion:表示已经在该目标版本做过充分的测试,系统会为你启用该版本最新的功能和特性 versionCode:项目版本号 versionName:项目版本名 (4) buildTypes闭包 一般有两个子闭包debug和release,通过Android Studio直接运行项目生成的都是测试版安装文件 debug:生成测试版安装文件的配置,可以不写 release:生成正式版安装文件的配置 minifyEnabled:代码混淆 ProguardFiles:指定混淆时使用的规则文件 (5) dependencies : 指定当前项目的所有依赖关系。一共有三种依赖方式本地依赖,远程依赖,库依赖 compile fileTree:本地依赖声明,将libs下所有jar.后缀文件都添加到项目的构建路径中 compile com.android.support:appcompat-v7:24.2.1:远程依赖声明com.android.support是域名部分,与其他公司的库做区分。appcompat-v7是组名称,与同公司不同库做区分。24.2.1是版本号与同一个库不同版本做区分。 Gradle构建项目时会首先检查本地是否已经有这个库的缓存,如果没有会自动联网去下载,然后添加到项目的构建路径当中。
注意: 曾经遇到过项目在Android5.0以下设备中不能运行的问题,后来是在defaultConfig中加入: multiDexEnabled true就可以了。(貌似是65K问题,网上也没有合适的答案,不过目前能解决这个问题就好啦)
Log可以打印时间,可以添加过滤器,日志有级别区分 Log级别: Log.v() verbose 所有信息,较为琐碎 Log.d() debug 调试信息 Log.i() info 较为重要的信息 Log.w() warning 警告信息 Log.e() error 错误信息 Log 的特性是为了让开发者能够快速锁定自己所需要的日志信息
直接输入 logv 按 Tab 键快速生成 Log.v() 方法。同理生成 Log.d()等方法。 直接输入 logt 按 Tab 键快速生成 “TAG”。
Shift + F10
