【2022暑假】一、Android系统及客户端概览 | 青训营笔记

212 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第1天。

读前须知:我是安卓方向零基础的新手,这个系列的笔记将主要用于记载我认为重要的知识点,不一定适用于所有人的学习情况。虽是新手但我依旧会尽力避免出现错误,不过如果没能完全避免,还希望读者能不惜笔墨地指出。

一、本堂课重点内容:

  1. 对于一个开发者而言,本堂课的重点在于了解自己要开发什么,即安卓客户端是什么?

二、详细知识点介绍:

  1. 回答安卓客户端是什么?

    安卓客户端是运行在安卓系统上的应用程序,所以要回答这个问题首先要知道安卓系统的架构:

    image.png

    可以看到,安卓系统的基础是Linux系统内核。在一些安卓系统的终端软件,如Termux中我们可以得到与Linux目录类似的目录结构:

    Snipaste_2022-07-25_21-15-16.png

    在内核之上是依次是硬件抽象层 (HAL)、安卓运行环境、原生 C/C++层和Java API层。最顶层是系统应用层,我们自己开发的App和系统自带的App都在这一层,两种App本质上没有太大区别。

    知道了系统的架构后还要了解开发的最终成果是什么样,即一个APK程序是什么?

    一个典型的APK文件结构如图:

    image.png

    其中包括:

    • AndroidManifest.xml :生命app中四大组件,以及权限等
    • classes.dex :所有编写的java、
    • res文件夹 :资源文件夹,包括图片、颜色、字符串,以及搭建的XML布局文件
    • META-INF文件夹:存在签名和证书,用于校验和安全
    • lib文件夹:主要是存放C/C++代码编译成的so文件

    这与使用Android Studio(以下简称AS)进行开发的过程中的目录结构有一定联系和区别,AS组织好的目录结构一般是这样:

    Snipaste_2022-07-25_21-15-16.png

    • app > manifests > AndroidManifest.xml

      清单文件描述了应用的基本特性并定义了每个应用组件。

    • app > java

      这个目录存放所有java代码。 com.example.myfirstapp > MainActivity是主 activity。它是应用的入口点。当您构建和运行应用时,系统会启动此 Activity 的实例并加载其布局。 androidTest和Test用来编写一些自动化测试。

    • app > res

      这个目录下的内容就有点多了。简单点说,就是你在项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下。当然这个目录下还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下,所以你不用担心会把整个res目录弄得乱糟糟的。

    • Gradle Scripts

      AS使用Gradle来构建项目,该目录下是gradle关于项目的各种配置文件

三、实践练习例子

对于零基础的开发者来说,阅读完第二节可能还是不理解。第二节的内容是我在阅读了《第一行代码》(第2版)第一、二章以及Android开发者指南:构建首个应用后得出的答案,建议新手在阅读完后按照书籍和开发者指南再实践一下,之后对安卓应用的理解会更加清晰。

四、引用参考:

标题:【Android 客户端专场 学习资料一】第四届字节跳动青训营 - 掘金

网址:juejin.cn/post/712271…

标题:# Termux 使用教程 #1 - Android 手机安装 Linux

网址p3terx.com/archives/te…

标题:Android开发者指南:构建首个应用

网址:developer.android.com/training/ba…

标题:《第一行代码》(第2版)

P18-P25