写在前面:
学习Android比较有意思的一点是可以一边学习一边实践,有一台Android设备做测试带给我一种学以致用的满足感,我的Android学习主要是按照郭霖大佬编著的《第一行代码——Android》的进度进行的,根据之前的经验,我觉得有必要写一写学习笔记,希望能够巩固学到的知识,下面就开始吧。
Android开发目前比较常用的工具是Android Studio,它的安装和配置就不再说了,网上应该有很多教程。
Android系统架构:
Linux内核层(Linux Kernel):为Android设备的各种硬件提供底层驱动(显示驱动、音频驱动、相机驱动、蓝牙驱动、Wi-Fi驱动……)。
系统运行库层(Libraries):通过一些C/C++库来为Android系统提供特性支持(如SQLite库提供了数据库的支持……),这一层还包括Android运行时库(Android Runtime),它提供一些核心库,让开发者能够只用JAVA编写Android应用。Android运行时库中还包含Dalvik虚拟机*(5.0系统之后改为ART运行环境),使得每一个Android应用都能拥有一个Dalvik虚拟机实例,运行在独立的进程当中。
(注*:dalvik是执行的时候编译+运行,安装比较快,开启应用比较慢,应用占用空间小;ART是安装的时候就编译好了,执行的时候直接就可以运行的,安装慢,开启应用快,占用空间大。)
应用框架层(Application Framework):提供构建应用程序时可能用到的各种API。
应用层(Applications):应用程序(如联系人、短信、游戏……)。
Android系统架构图:
Android系统的四大组件:活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)、内容提供器(Content Provider)。
Android项目文件结构:
进入正题,通过Android Studio建立的项目默认是“Android”模式的,切换成“Project”模式比较方便一点,下面就是项目结构了,挑几个比较重要的文件记录一下他们的作用。
首先是最外层目录的文件:
app文件夹:项目主要在这个文件夹中编写。
local.properties:用于指定本机中Android SDK的路径。
app文件夹:
libs:项目中使用到的第三方jar包放在这个文件夹中,会被自动添加到构建路径里去。
java:放java代码的地方,比如活动的代码。
res:存放活动布局文件、图片文件、字符串。
AndroidManifest.xml:整个Android项目的配置文件,程序中定义的所有四大组件都要在这个文件中注册,还可以给应用程序添加权限声明。
build.gradle:app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置。
proguard-rules.pro:用于指定项目代码的混淆规则。
详解build.gradle文件:
build.gradle代码示例:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.admin.study_test"
minSdkVersion 14
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
apply plugin:标识项目是一个应用程序模块还是一个库模块,取值有两种:com.android.application和com.android.library.
compileSdkVersion:项目编译版本,28代表Android 9.0,对应关系如下表:
API Level | 最初Android版本 | Linux内核版本 | 首次发布日期 | 后续Android版本 |
29 | 10 | Unknown | 2019-06-05(Beta 4) | - |
28 | 9 | 4.4.107, 4.9.84, and 4.14.42 | 2018-08-06 | 无 |
27 | 8.1 | 4.10 | 2017-12-05 | 无 |
26 | 8.0 | 4.10 | 2017-08-21 | 无 |
25 | 7.1 | 4.4.1 | 2016-10-04 | 7.1.1、7.1.2 |
24 | 7.0 | 4.4.1 | 2016-08-22 | 无 |
23 | 6.0 | 3.18.10 | 2015-10-05 | 6.0.1 |
22 | 5.1 | 3.16.1 | 2015-03-09 | 5.1.1 |
21 | 5.0 | 3.16.1 | 2014-11-12 | 5.0.1、5.0.2 |
20 | 4.4w | 3.10 | 2014-06-25 | 4.4w.1、4.4w.2 |
19 | 4.4 | 3.10 | 2013-10-31 | 4.4.1、4.4.2、4.4.3、4.4.4 |
18 | 4.3 | 3.4.0 | 2013-07-24 | 4.3.1 |
17 | 4.2 | 3.4.0 | 2012-11-13 | 4.2.1、4.2.2 |
16 | 4.1 | 3.0.31 | 2012-07-09 | 4.1.1、4.1.2 |
15 | 4.0.3 | 3.0.1 | 2011-12-16 | 4.0.4 |
14 | 4.0 | 3.0.1 | 2011-10-18 | 4.0.1、4.0.2 |
13 | 3.2 | 2.6.36 | 2011-07-15 | 3.2.1、3.2.2、3.2.3、3.2.4、3.2.5、3.2.6 |
12 | 3.1 | 2.6.36 | 2011-05-10 | 无 |
11 | 3.0 | 2.6.36 | 2011-02-22 | 无 |
10 | 2.3.3 | 2.6.35 | 2011-02-09 | 2.3.4、2.3.5、2.3.6、2.3.7 |
9 | 2.3 | 2.6.35 | 2010-12-06 | 2.3.1、2.3.2 |
8 | 2.2 | 2.6.32 | 2010-05-20 | 2.2.1、2.2.2、2.2.3 |
7 | 2.1 | 2.6.29 | 2010-01-12 | 无 |
6 | 2.0.1 | 2.6.29 | 2009-12-03 | 无 |
5 | 2.0 | 2.6.29 | 2009-10-26 | 无 |
4 | 1.6 | 2.6.29 | 2009-09-15 | 无 |
3 | 1.5 | 2.6.27 | 2009-04-27 | 无 |
2 | 1.1 | 2.6.X | 2009-02-09 | 无 |
1 | 1.0 | - | 2008-09-23 | 无 |
作为开启Android笔记的第一篇博客,主要是记录了一下学习过程中容易遗忘或者比较重要的知识点,希望开一个好头,下一篇记录Android四大组件之一——活动。