我的第一行Android代码.Android学习.01
Android系统架构
Android 大致可以分为四层架构:Linux 内核层、系统运行库层、应用框架层和应用层。
- Linux 内核层
Android 系统是基于 Linux 内核的,这一层为 Android 设备的各种硬件提供了底层的驱动,如 显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi 驱动、电源管理等 - 系统运行库层
这一层通过一些 C/C++库来为 Android 系统提供了主要的特性支持。
同样在这一层还有 Android 运行时库,它主要提供了一些核心库,能够允许开发者使用 Java 语言来编写 Android 应用。另外,Android 运行时库中还包含了 Dalvik 虚拟机(5.0 系统之后改为 ART 运行环境),它使得每一个 Android 应用都能运行在独立的进程当中,并且拥有一个自己的 Dalvik 虚拟机实例。相较于 Java 虚拟机,Dalvik 是专门为移动设备定制的,它针对手机内存、 CPU 性能有限等情况做了优化处理。 - 应用框架层
这一层主要提供了构建应用程序时可能用到的各种 API,Android 自带的一些核心应用就是 使用这些 API 完成的,开发者也可以通过使用这些 API 来构建自己的应用程序。 - 应用层
所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序,或 者是你从 Google Play 上下载的小游戏,当然还包括你自己开发的程序。
准备工具
- JDK。JDK 是 Java 语言的软件开发工具包,它包含了 Java 的运行环境、工具集合、基础 类库等内容。
- Android SDK。Android SDK 是谷歌提供的 Android 开发工具包,在开发 Android 程序时, 我们需要通过引入该工具包,来使用 Android 相关的 API。
- Android Studio。Android Studio 在开发 Android 程序方面要远比 Eclipse 强 大和方便得多。
分析Android程序项目结构
这里我们将项目结构模式切换成 Project。
观察整个结构目录的内容:
- .gradle和.idea
这两个目录下放置的都是 Android Studio 自动生成的一些文件,我们无须关心,也不要去手动编辑。 - app
项目中的代码、资源等内容几乎都是放置在这个目录下的,我们后面的开发工作也基本都是 在这个目录下进行的,待会儿还会对这个目录单独展开进行讲解。 - gradle
这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle 下载好,而是会自动根据本地的缓存情况决定是否需要联网下载 gradle。 - .gitignore
这个文件是用来将指定的目录或文件排除在版本控制之外的。 - build.gradle
这是项目全局的 gradle 构建脚本,通常这个文件中的内容是不需要修改的。稍后我们将会详 细分析 gradle 构建脚本中的具体内容。 - gradle.properties
这个文件是全局的 gradle 配置文件,在这里配置的属性将会影响到项目中所有的 gradle 编译 脚本。 - gradlew 和 gradlew.bat
这两个文件是用来在命令行界面中执行 gradle 命令的,其中 gradlew 是在 Linux 或 Mac 系统 中使用的,gradlew.bat 是在 Windows 系统中使用的。 - local.properties
这个文件用于指定本机中的 Android SDK 路径,通常内容都是自动生成的,我们并不需要修改。 除非你本机中的 Android SDK 位置发生了变化,那么就将这个文件中的路径改成新的位置即可。 - settings.gradle
这个文件用于指定项目中所有引入的模块。通常情况下模块的引入都是自动完成的,需要我们手 动去修改这个文件的场景可能比较少。
接下来看app目录下的内容:
- build
主要也是包含了一些在编译时自动生成的文件。 - libs
如果你的项目中使用到了第三方 jar 包,就需要把这些 jar 包都放在 libs 目录下,放在这个目 录下的 jar 包都会被自动添加到构建路径里去。 - androidTest
是用来编写 Android Test 测试用例的,可以对项目进行一些自动化测试。 - java
java 目录是放置我们所有 Java 代码的地方。 - res
你在项目中使用到的所有图片、布局、字符 串等资源都要存放在这个目录下。当然这个目录下还有很多子目录,图片放在 drawable目录下,布 局放在 layout目录下,字符串放在 values目录下,所以你不用担心会把整个 res目录弄得乱糟糟的。 - AndroidManifest.xml
这是你整个 Android 项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。 - test
此处是用来编写 Unit Test 测试用例的,是对项目进行自动化测试的另一种方式。 - .gitignore
这个文件用于将 app 模块内的指定的目录或文件排除在版本控制之外,作用和外层 的.gitignore 文件类似。 - build.gradle
这是 app 模块的 gradle 构建脚本,这个文件中会指定很多项目构建相关的配置。 - proguard-rules.pro
这个文件用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代 码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读。
Android系统四大组件分别是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver) 和内容提供器(Content Provider)。
其中活动是所有 Android 应用程序的门面,凡是在应用中你看 得到的东西,都是放在活动中的。
而服务就比较低调了,你无法看到它,但它会一直在后台默默 地运行,即使用户退出了应用,服务仍然是可以继续运行的。
广播接收器允许你的应用接收来自 各处的广播消息,比如电话、短信等,当然你的应用同样也可以向外发出广播消息。
内容提供器则为应用程序之间共享数据提供了可能,比如你想要读取系统电话簿中的联系人,就需要通过内 容提供器来实现。
res目录下的内容:
- 所有以 drawable 开头的文件夹都是用来放图片的
- 所有以 mipmap 开头的文件夹都是用来放应用图标的
- 所有以 values 开头的文件夹都是用来放字符串、样式、颜色等配置的
- layout 文件夹是用来放布局文件 的
Android日志工具Log
- Log.v()。用于打印那些最为琐碎的、意义最小的日志信息。对应级别 verbose,是 Android 日志里面级别最低的一种。
- Log.d()。用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。 对应级别 debug,比 verbose 高一级。
- Log.i()。用于打印一些比较重要的数据,这些数据应该是你非常想看到的、可以帮你分 析用户行为数据。对应级别 info,比 debug 高一级。
- Log.w()。用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修 复一下这些出现警告的地方。对应级别 warn,比 info 高一级。
- Log.e()。用于打印程序中的错误信息,比如程序进入到了 catch 语句当中。当有错误信 息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别 error, 比 warn 高一级。
Log.d()方法中传入了两个参数:第一个参数是 tag,一般传入当前的类名就好,主要用于 对打印信息进行过滤;第二个参数是 msg,即想要打印的具体的内容。
- 本文标题:我的第一行Android代码.Android学习.01
- 本文作者:萧禾财
- 创建时间:2022-07-26 10:32:25
- 本文链接:https://ipartmentxhc.github.io/2022/07/26/我的第一行Android代码-Android学习-01/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!