我的第一行Android代码.Android学习.01
萧禾财 Lv4

Android系统架构

Android 大致可以分为四层架构:Linux 内核层、系统运行库层、应用框架层和应用层。

  1. Linux 内核层
    Android 系统是基于 Linux 内核的,这一层为 Android 设备的各种硬件提供了底层的驱动,如 显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi 驱动、电源管理等
  2. 系统运行库层
    这一层通过一些 C/C++库来为 Android 系统提供了主要的特性支持。
    同样在这一层还有 Android 运行时库,它主要提供了一些核心库,能够允许开发者使用 Java 语言来编写 Android 应用。另外,Android 运行时库中还包含了 Dalvik 虚拟机(5.0 系统之后改为 ART 运行环境),它使得每一个 Android 应用都能运行在独立的进程当中,并且拥有一个自己的 Dalvik 虚拟机实例。相较于 Java 虚拟机,Dalvik 是专门为移动设备定制的,它针对手机内存、 CPU 性能有限等情况做了优化处理。
  3. 应用框架层
    这一层主要提供了构建应用程序时可能用到的各种 API,Android 自带的一些核心应用就是 使用这些 API 完成的,开发者也可以通过使用这些 API 来构建自己的应用程序。
  4. 应用层
    所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序,或 者是你从 Google Play 上下载的小游戏,当然还包括你自己开发的程序。

准备工具

  • JDK。JDK 是 Java 语言的软件开发工具包,它包含了 Java 的运行环境、工具集合、基础 类库等内容。
  • Android SDK。Android SDK 是谷歌提供的 Android 开发工具包,在开发 Android 程序时, 我们需要通过引入该工具包,来使用 Android 相关的 API。
  • Android Studio。Android Studio 在开发 Android 程序方面要远比 Eclipse 强 大和方便得多。

分析Android程序项目结构

这里我们将项目结构模式切换成 Project。

观察整个结构目录的内容:

image-20220726104514167

  1. .gradle和.idea
    这两个目录下放置的都是 Android Studio 自动生成的一些文件,我们无须关心,也不要去手动编辑。
  2. app
    项目中的代码、资源等内容几乎都是放置在这个目录下的,我们后面的开发工作也基本都是 在这个目录下进行的,待会儿还会对这个目录单独展开进行讲解。
  3. gradle
    这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle 下载好,而是会自动根据本地的缓存情况决定是否需要联网下载 gradle。
  4. .gitignore
    这个文件是用来将指定的目录或文件排除在版本控制之外的。
  5. build.gradle
    这是项目全局的 gradle 构建脚本,通常这个文件中的内容是不需要修改的。稍后我们将会详 细分析 gradle 构建脚本中的具体内容。
  6. gradle.properties
    这个文件是全局的 gradle 配置文件,在这里配置的属性将会影响到项目中所有的 gradle 编译 脚本。
  7. gradlew 和 gradlew.bat
    这两个文件是用来在命令行界面中执行 gradle 命令的,其中 gradlew 是在 Linux 或 Mac 系统 中使用的,gradlew.bat 是在 Windows 系统中使用的。
  8. local.properties
    这个文件用于指定本机中的 Android SDK 路径,通常内容都是自动生成的,我们并不需要修改。 除非你本机中的 Android SDK 位置发生了变化,那么就将这个文件中的路径改成新的位置即可。
  9. settings.gradle
    这个文件用于指定项目中所有引入的模块。通常情况下模块的引入都是自动完成的,需要我们手 动去修改这个文件的场景可能比较少。

接下来看app目录下的内容:

image-20220726105348932

  1. build
    主要也是包含了一些在编译时自动生成的文件。
  2. libs
    如果你的项目中使用到了第三方 jar 包,就需要把这些 jar 包都放在 libs 目录下,放在这个目 录下的 jar 包都会被自动添加到构建路径里去。
  3. androidTest
    是用来编写 Android Test 测试用例的,可以对项目进行一些自动化测试。
  4. java
    java 目录是放置我们所有 Java 代码的地方。
  5. res
    你在项目中使用到的所有图片、布局、字符 串等资源都要存放在这个目录下。当然这个目录下还有很多子目录,图片放在 drawable目录下,布 局放在 layout目录下,字符串放在 values目录下,所以你不用担心会把整个 res目录弄得乱糟糟的。
  6. AndroidManifest.xml
    这是你整个 Android 项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。
  7. test
    此处是用来编写 Unit Test 测试用例的,是对项目进行自动化测试的另一种方式。
  8. .gitignore
    这个文件用于将 app 模块内的指定的目录或文件排除在版本控制之外,作用和外层 的.gitignore 文件类似。
  9. build.gradle
    这是 app 模块的 gradle 构建脚本,这个文件中会指定很多项目构建相关的配置。
  10. proguard-rules.pro
    这个文件用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代 码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读。

Android系统四大组件分别是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver) 和内容提供器(Content Provider)。

其中活动是所有 Android 应用程序的门面,凡是在应用中你看 得到的东西,都是放在活动中的。

服务就比较低调了,你无法看到它,但它会一直在后台默默 地运行,即使用户退出了应用,服务仍然是可以继续运行的。

广播接收器允许你的应用接收来自 各处的广播消息,比如电话、短信等,当然你的应用同样也可以向外发出广播消息。

内容提供器则为应用程序之间共享数据提供了可能,比如你想要读取系统电话簿中的联系人,就需要通过内 容提供器来实现。

res目录下的内容:

image-20220726120938283

  • 所有以 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 许可协议。转载请注明出处!