该Android学习系列主要是参考郭神的第一行代码(第二版)来学习的,目的是在学习的过程中记录下一些重要的知识点,不喜勿喷,谢谢。
目录结构
一、Android系统架构
1.架构图
2.层级说明
3.Android应用开发特色
4.程序的项目结构(项目结构模式为project)
5.app目录下的主要内容具体分析
6.全局build.gradle文件讲解
7.app目录下build.gradle文件讲解
一、Android系统架构
1.架构图

2.层级说明
(1)Linux内核层
Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动,音频驱动等。
(2)系统运行库层
这一层通过一些C/C++库来为Android系统提供了主要的特性支持。如OpenGL|ES库提供了3D绘图的支持。同时,这一层还有Android运行时库,它主要提供了一些核心库,能够允许开发者使用Java来编写Android应用。另外,它还包含了Dalvik虚拟机,能够使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik虚拟机实例。相比于Java虚拟机,它是专门为移动设备定制的,针对手机内存,CPU性能有限等情况做了优化处理。
(3)应用框架层
这一层主要提供了构建应用程序时可能用到的各种API。
(4)应用层
所有安装在手机上的应用程序都属于这一层。
现在好像多了一层,硬件抽象层。是由于制作手机的工厂不愿意分享源码导致!如下图所示:

3.Android应用开发特色
(1)四大组件
Activity(活动):是所有Android应用程序的门面,凡是在应用中看到的东西都是放在activity中的。
Service(服务):前台看不到,是在后台默默运行的,即使退出应用service仍然可以继续运行。
Broadcast Receiver(广播接收器):它允许你的应用接收或者发出广播消息。
Content Provider(内容提供器):它为应用程序之间共享数据提供了可能。
(2)丰富的系统控件
(3)SQLite数据库
(4)强大的多媒体
(5)地理位置定位
4.程序的项目结构(项目结构模式为project)
(1)总览图

(2).gradle和.idea
这两个目录下放置的是Android Studio(以下简称为AS)自动生成的一些文件。
(3)app
项目中的代码、资源等内容几乎都是放置在该目录下。
(4)build
它主要包含了一些在编译时自动生成的文件。
(5)gradle
这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。AS默认没有开启。
(6).gitignore
该文件是用来将指定的目录或文件排除在版本控制之外。
(7)build.gradle
这是项目全局的gradle构建脚本。
(8)gradle.properties
该文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。
(9)gradlew和gradlew.bat
这两个文件是用来在命令行中执行gradle命令的,前者是在Linux或Mac系统中使用,后者是在Windows系统中使用。
(10)local.properties
该文件用来指定本电脑中Android SDK的路径。
(11)MyCat.iml
iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(AS也是其旗下的一款软件),用来标识这是一个IntelliJ IDEA项目。
(12)settings.gradle
该文件用于指定该项目中引入的模块。

5.app目录下的主要内容具体分析
(1)总览图

(2)libs
该目录主要放置一些第三方的jar包。
(3)androidTest
此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
(4)java
该目录是放置所有Java代码的地方。
(5)res
该目录主要放置项目中用到的所有图片、布局、字符串等资源。其中,drawable目录放置图片,layout目录放置布局,values目录放置字符串。
(6)AndroidManifest.xml
它是整个Android项目的配置文件。
(7)build.gradle
这是app模块的gradle构建脚本。
6.全局build.gradle文件讲解
(1)文件内容

(2)jcenter
其实它是一个代码托管仓库,很多Android开源项目都会选择将代码托管到 jecnter 中,声明了这行配置之后,我们就可以在项目中引用任何jcenter上的开源项目了。
(3)classpath
dependency闭包中使用了classpath声明了一个Gradle插件。因为它不是专门为构建Android项目开发的,Java、C++等都可以使用Gradle来构建,所以我们要想使用它来构建Android项目就需要声明这个插件。
7.app目录下build.gradle文件讲解


网友评论