- Android系统架构
- Android开发环境搭建
- Android Studio的项目结构
一. Android系统架构
通过这两张图,我们可以看到Android
的系统架构大致可以分为四层架构:
1.Linux内核层
Android
系统是基于Linux
内核的,这一层为Android
设备的各种硬件提供了底层的驱动,如显示驱动,音频驱动,照相机驱动,蓝牙驱动,Wi-Fi驱动,电源管理等。
2.系统运行库层
这一层通过一些C/C++
库来为Android
系统提供了主要的特性支持,如SQLite
库提供了数据库的支持,OpenGL|ES
库提供了3D
绘图的支持,WebKit
库提供了浏览器内核的支持等。
同样在这一层还有Android
运行时库,它主要提供了一些核心库,能够允许开发者使用Java
语言来编写Android
应用。另外Android
运行时库中还包含了Dalvik
虚拟机(5.0系统之后改为ART
运行环境),它使得每一个Android
应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik
虚拟机实例。相较于Java
虚拟机,Dalvik
是专门为移动设备定制的,它针对手机内存,CPU
性能有限等情况做了优化处理。
3.应用框架层
这一层主要提供了构建应用程序时可能用到的各种API
,Android
自带的一些核心应用就是使用这些API
完成的,开发者也可以通过使用这些API
来构建自己的应用程序。
4.应用层
所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人,短信等程序,或者是你从Google Play
上下载的小游戏,当然还包括你自己开发的应用程序。
2. Android开发环境的搭建
JDK: JDK
是Java
语言的软件开发工具包,它包含了Java
的运行环境,工具集合,基础类库等内容。
AndroidSDK: 是谷歌提供的Android
开发工具包,在开发Android
程序时,我们需要通过引入该工具包,来使用Android
相关的API
。
Android Studio: 2013年的时候,谷歌推出的一款官方的IDE
工具。
Application name: 应用的名称,此应用安装到手机之后会在手机上显示该名称。
Company Domain: 表示公司域名
Package name: 表示项目的包名,Android
系统就是通过包名来区分不同应用程序的,因此包名一定要具有唯一性。
Project location: 表示项目代码存放的位置
Android4.0
以上的系统已经占据了超过98%的Android
市场份额,因此这里我们将MimimumSDK
指定成API15
就可以了。
3. Android Studio的项目结构
1. .gradle和.idea
这两个目录下放置的都是
Android Studio
自动生成的一些文件。我们无需关心,也不要去手动编辑。2. app
项目中的代码,资源等内容几乎都是放在这个目录下的。
3.build
也不需要太多的关心,主要包含了一些在编译时自动生成的文件
4.gradle
包含了
gradle wrapper
的配置文件,使用gradle wrapper
的方式不需要提前将gradle
下载好,而是会自动根据本地的缓存情况是否需要联网下载gradle
。5. .gitignore
这个文件是用来将指定的目录或文件排除在版本的控制之外的。
6. build.gradle
这是项目全局的
gradle
构建脚本,通常这个文件的内容是不需要修改的。7. gradle.properties
这个文件是全局的
gradle
配置文件,在这里配置的属性将会影响到项目中所有的gradle
编译脚本。8. gradlew和gradlew.bat
这两个文件是用来在命令行界面中执行
gradle
命令的,其中gradlew
是在Linux
或Mac
系统中使用的,gradlew.bat
是在Windows
系统中使用的。9.local.properties
这个文件用于指定本机中的
AndroidSDK
路径,通常内容都是自动生成的,我们并不需要修改,除非你本机中的AndroidSDK
位置发生了变化,那么就将这个文件中的路径改成新的位置即可。10.MyApplication.iml
iml
文件是所有IntelliJ IDEA
项目都会自动生成的一个文件(Android Studio
是基于IntelliJ IDEA
开发的),用于标识这是一个IntelliJ IDEA
项目,我们不需要修改这个文件中的任何内容。11. settings.gradle
这个文件用于指定项目中所有引入的模块。由于
MyApplication
项目中就只有一个app
模块,因此该文件中也就只引入了app
这一个模块。通常情况下,模块的引入都是自动完成的,需要我们手动去修改这个文件的场景可能比较少。