Day01-认识Android 交互了解系统框架|青训营笔记

184 阅读4分钟

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

本次学习笔记内容: 1.认识Android开发流程与了解学习路线 2.初步学习Android的平台架构

Android客户端开发

开发流程

截屏2022-07-23 21.36.13.png

Android 知识图谱

这一部分是比较重要的,对于Android的学习,了解学习知识图谱,明确学习目标和方向:

第一层交付:页面+逻辑+数据

技能点:复杂的交互,清晰的逻辑,网络基础

截屏2022-07-23 21.39.32.png

第二层交付:多样性需求

技能点:多媒体基础,OpenGL,音视频编解码,游戏开发

截屏2022-07-23 21.41.43.png

第三层交付:体验+质量+安全+个性化

技能点:Android系统,底层引擎,安全,Hook,机器学习,端智能 截屏2022-07-23 21.42.07.png

正式开始Android的学习

Android平台架构

截屏2022-07-23 21.47.30.png

架构详细说明

1、系统应用层

这一层就是各App所在的最上层了,我们自己开发的App和系统自带的App都在这一层,两种App本质上没有太大区别。一些系统的App提供的功能我们可以直接调用,比如打电话、发短信等,当然我们自己开发的app也可以给其他产品提供类似的调用功能。

2、 Java ****API

这层就是Android Framework提供给开发者的接口,我们可以基于这些接口打造各自的App。在这一层主要的技术栈就是最基础的交付内容,包括页面+逻辑+页面,一些多媒体相关的需求也有成熟的api可以直接使用。

3、原生 C/C++层

一些核心的系统服务和组件是C/C++编写的,我们可以用Android NDK 直接从原生代码访问某些原生平台库。从这一层往下,一些多样化的需求就可以被满足的很好,比如音视频编解码、安全、质量、体验等。

4、Android Runtime

这一层就会涉及虚拟机的知识,在一层会把DEX字节码进行编译,优化执行效率。在一层我们可以做一些体验相关的优化,让代码运行更高效。所需要的技术门槛也就更高一些。

5、硬件抽象层 (HAL)

主要提供硬件组件的封装,包括相机、传感器和蓝牙等。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。

6、Linux 内核

Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和内存管理。

使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。

APK构成

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

Git

截屏2022-07-23 21.54.14.png

课外补充

APK内容详细介绍

1、app文件夹:

​ 这是工程产生后,AndroidStudio自动创建的module所在文件夹,应用程序的源代码和资源文件就放在这个module当中。

2、build:

​ 编译后的文件存放的位置,最终生成的.apk文件就在这个目录下。

3、libs:

​ 添加的 *.jar 或 *.so 等文件存放位置。

4、src文件夹里有三个文件夹:

​ 1)androidTest:

​ 2)main:

​ (1)java:Java源代码

​ (2)res:资源文件

​ drawable:存储图片和xml文件,*dpi表示存储分辨率的图片,用于适配不同的屏幕。

​ layout:存储布局文件

​ mipmap:存储原生图片资源,缩放时有性能优化

​ values:存储APP引用的一些值。

values文件下:

colors.xml :存储了一些color样式 dimens.xml:存储了一些公用的dp值 strings.xml:存储了引用的string值 styles.xml:存储了App需要用到的一些样式 ​ AndroidManifest.xml是整个项目的配置文件,描述了当前应用的package中提供的各种组件的实现类以及各种能被处理的数据和启动位置。

​ 程序中定义的组件(Activity、Service、ContentProvider、BroadcastReceiver)需要在AndroidManifest.xml文件中注册后才能使用。

​ 3)test:

androidTest和test存放和测试有关的内容。

​ build.gradle文件:是module编译时的配置文件。

课后总结

通过今天的学习首先认识到Android开发的流程,了解了三层开发流程;对Android系统平台架构有了初步的认识和学习,最后对APK的层级内容和Git有了初步的认识