1-Android系统及客户端概览 | 青训营笔记

179 阅读5分钟

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

》》「第一篇笔记」《《

一、移动互联生态环境


人们了解世界的方式,在过去100多年发生了翻天覆地的变化,目前在移动互联的世界,主要手段是手机和app的媒介

移动互联网自始至今,发展历途不超过20年,却已普及家家户户。 其根本原因在于移动互联网的本质-互联与通信,以雪球效益日益壮大,至今已然成熟发展。 而让其本质以容易理解的方式呈现于用户面前的,则是一个又一个的移动应用开发、维护等支撑团队。

而一个团队的基本内部流程-交付图大致如下:

移动互联网的新兴,虽是大势使然,却也离不开众多幕后团队。

二、Android知识图谱


1、三个方向:

对Android客户端开发来说,我们面对的角色主要为三个方向:

  • 对外(用户):为用户创造价值。
  • 对内(公司):对内都是成本,对外才是收益。
  • 自身(个人):自身也是产品,自身的技术品牌。

2、三个方向详解:

对外:创造用户价值

第一层交付:简单交付

简单交付:实现应用的核心-一个能满足基础需求的应用
技能知识需求:交互设计、逻辑设计、语言基础、网络基础

第二层交付:多样性需求

多样性需求交付:实现应用的功能多样化-一个能满足多项需求的集成应用
技能知识需求:需求方向进阶性内容

第三层交付:优化

经过前两层的交付后产生的应用,肯定已具规模,不论是用户数还是应用本身。所以现在所需要的不再是多样性也不需要加入更多的功能,更集成的布局。而是需要应用更具有稳定性、安全性与流畅性,或许再多一个个性定制化。

技能知识需求:Android系统,底层引擎,安全,Hook,机器学习,端智能,网络安全等

对内:节省成本

第一层交付:单人效能

单人效能:一个人可言效能,一群人组成的团队也有其效能。一个团队总效能基础组成单位便是个体效能。个人效能起来了,团体的效能才能上去,才能达到企业缩减成本目的的基础条件。

技能知识需求:编译原理,全栈,流程管理,多工具使用

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

团队和公司效能:如单人效能所言,集体由个体组成,当人数达到一定规模,管理架构便成为了重中之重。提升团体的整体管理效率、作业架构模式与提升作业可复用率,为的就是达到1+1不小于2甚至要大于2的结果。

技能知识需求:架构设计,代码范式设计,跨端技术,大前端

自身:打造技术品牌

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

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

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


一、二小节总结:
从宏观认识未来,从细节把握未来。
从文字认识世界,从己身发展技术。


三、认识Android系统

Android平台架构图:

1、架构图解析:

  • 系统应用层:

3-系统应用层.png

安卓系统最上层,最接近用户的一层。 系统应用层的App分为两类:普通开发应用,系统应用。两者间无本质区别。

  • Java API层

3-Java API层.png

这层就是Android Framework提供给开发者的接口,我们可以基于这些接口打造各自的App。 在开发过程中,如果有需要,主要是调用的本层的一些成熟的API。

  • 原生C/C++层和Android Runtime

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

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

  • 硬件抽象层(HAL)

3-抽象硬件层(HAL).png

对硬件的操作,需要用到的一层。

  • Linux内核

3-Linux内核层.png Android平台的基础是Linux内核,属于整个Android架构的最底层的系统。

2、APK构成

APK本质是一个压缩包,解压后如下图:

3-APK解压后内容.png 其一般包含:
AndroidManifest.xml:生命app中四大组件,以及权限等 。
classes.dex:所有编写的java、kotlin等代码 。
res文件夹:资源文件夹,包括图片、颜色、字符串, 以及搭建的XML布局文件 。
resources.arsc:资源索引。
Iib文件夹:主要是存放C/C++代码编译成的so文件 。
META-INF文件夹:存在签名和证书,用于校验和安全。

四、认识工具

开发工具:Android Studio
官方文档

五、Git库

1、Git基础

Git仓库基本流程图.png Workspace:工作区,本地电脑存放项目文件的地方,自己来指定位置
Remote Repository:远程仓库,也就是代码存在的地方
Local Repository:本地仓库,也就是把代码拉取到本地存放的地方
Index/Stage:本地仓库的暂存区

Git常用命令速查表.png

总结:

本节课程:
1、了解到了Android的部分宏观视角内容,使我对未来的规划能更加的清晰。
2、了解的Android平台的基础架构,对Android的认识更加的清楚。
3、Git基础内容与基本工作流程。
4、在学习某样事物前,对事物进行宏观上的了解,是有利于后续的细化学习的。

此类引用块为引用课上或课件资料内容
「本篇笔记,多数图片均为引用」
「本篇笔记,部分内容仅个人观点」