Android 系统及客户端概览|青训营第一课笔记

124 阅读5分钟

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

本节课知识点:开发和交互Android知识图谱认识Android系统认识工具(Android Studio)认识Git

一、开发和交付

  • 提供信息的是app,表面是人和机器的关系,本质上还是人与人的关系。产品经理根据人的需求和世界的信息,形成需求,研发工程师来实现,再呈现给用户。所以背后有着一大批人在负责创造和维护这个沟通媒介。
  • 深入到更详细的内部流程,客户端开发只是直接面向用户的人,背后有更多的支撑团队,包括服务端团队提供网络数据,而数据可以来自推荐团队的处理。此外还经过QA同学的测试,保证质量的情况下,发布给用户。

二、Android 知识图谱

对于一个客户端开发来讲,我们面对的角色主要包括:

  • 对外(用户):为用户创造价值,是最终的目的和宗旨,也是整个系统存在的前提
  • 对内(公司):上面第二个图对应的是更详细的内部交付涉及的团队,实际上比这要复杂的多。这些团队组成了公司这个实体。对内都是成本,对外才是收益。对于内部来讲,我们的目的是降低交易成本。
  • 自身(个人):我们通过自身的努力来推进交付流程,提供给用户好用的产品。同时个人也是一个产品,我们需要打造自身的技术品牌,培养自己的技术实力。

对外 - 为用户创造价值

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

这次层交互是最基本的,需要给用户展示交互良好的页面,提供符合预期的逻辑功能,并且获取和展示数据。用户大部分就可以得到满足。

技能点:复杂的交互清晰的逻辑网络基础 d769a9ea253d4beb93cdec8a7d700a60_tplv-k3u1fbpfcp-zoom-in-crop-mark_3024_0_0_0.webp

2、第二层交付:多样性需求

当用户最简单的了解信息的需求满足之后,我们需要进一步满足更多样化的诉求,比如多媒体内容,直播流观看,甚至游戏、AR等。这些需求背后需要更多的知识来支撑。

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

6f1b43f713ec4c579ceb09d6add2db6e_tplv-k3u1fbpfcp-zoom-in-crop-mark_3024_0_0_0.webp

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

当用户多样化的需求被满足,我们可能提供的就是一个规模庞大的App,随着用户规模的增加,用户诉求也就更高。特别是在目前的移动互联网时代,体验质量安全等方面的需求急速扩大。

技能点:Android系统底层引擎安全Hook机器学习端智能

84de184e0a454f31a379ae2290026bb4_tplv-k3u1fbpfcp-zoom-in-crop-mark_3024_0_0_0.webp

对内 - 减少公司成本

1、第一层交付:单人效能

效能提升的第一层是单人效能,这里的单人不是指自己,而是提升团队每个人的开发效率,这包括代码编写更快,编译更快,部署和发布更快,测试更方便等。

技能点:编译全栈流程管理

2、第二层交付:团队和公司效能

目前客户端分Android和iOS两端,在业务侧基本是1:1人力配比,怎么更好的复用人力,目前在尝试的有各种跨端和动态化方案。这可以从更大维度来提升公司的效能。

技能点:架构设计代码范式跨端大前端

f3a84e12d23a4aad962988533ec1c0f3_tplv-k3u1fbpfcp-zoom-in-crop-mark_3024_0_0_0.webp

自身- 打造自身的技术品牌

1、第一层交付:满足交付的基本技能

21227713898d46c5b694df39b71ffc99_tplv-k3u1fbpfcp-zoom-in-crop-mark_3024_0_0_0.webp

2、第二层交付:打造自身的技术高度

56983321a5bf4d7babb99d04ea1967bc_tplv-k3u1fbpfcp-zoom-in-crop-mark_3024_0_0_0.webp

3、第三层交付:君子不器,培养自己的综合素养

d1a6584bb3a0495ba95cecc9c2fafce9_tplv-k3u1fbpfcp-zoom-in-crop-mark_3024_0_0_0.webp

三、认识Android 系统

Android平台架构图

ba1fd7c9679a40dca88a82af8161c9c6_tplv-k3u1fbpfcp-zoom-in-crop-mark_3024_0_0_0.webp

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文件