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

70 阅读3分钟

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

从移动生态讲起

从移动互联网讲:

移动互联网.png (1)手机是获取信息的最主要媒介。 (2)人与机器的关系本质上是人与人的关系,即产品经理从人获得需求,从世界获得数据,基于一定的组织规则,形成一定的需求,提交给客户端研发,客户端研发将需求使用代码实现放在手机上。 (3)客户端是离用户最近的研发 对于客户端研发:

Android知识图谱

  • 对外(用户):为用户创造价值

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

eg:俄罗斯轮盘赌

页面:轮盘、小球

逻辑:小球转到某一位置(贝塞尔曲线)

数据:是否会中奖,需要先进行网络请求获取(在转之前已知道结果)

知识图谱:

对外第一层交付知识图谱.png

第二层交付:多样性需求

知识图谱:

对外第二层交付知识图谱.png

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

知识图谱:

对外第三层交付知识图谱.png

  • 对内(公司):对内为成本,对外为效益

第一层交付:单人效率(对于时间的分配)

单人效率不是指单个人的效率,是我们的工作能够提升团队的每个人的效率。

技术图谱:

第二层效率:团队效率

代码“肥胖”的危害:复杂程度高,编译慢;新增代码复杂,扩展性差;耦合严重(架构师:梳理信息以提高团队效能)

技术图谱:

团队效能技术图谱.png

  • 自身(个人):个人的技术品牌

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

技术图谱:

个人第一层交付技术图谱.png

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

木桶理论 长板理论

技术图谱:

个人第二层交付技术图谱.png

第三层交付:培养自己的综合素养

技术图谱:

个人第三层交付技术图谱.png

人们为了逃避真正的思考,是可以做任何事情的。 --王兴

有三样东西是极端坚硬的,钢铁、钻石以及认识自己。--富兰克林

程序员发展金字塔:

程序员发展金字塔.png

小结:

交付含义:

对外(第一层、第二层、第三层)

对内(第一层、第二层)

对自身(第一层、第二层、第三层)

认识Android系统

Android系统:

系统应用层(主要):

系统应用层.png

App所在最上层,自行开发及自带的App都在这一层,两种App可相互调用。

Java API层(主要):

Java API层.png

Android Framework提供给开发者的接口。主要技术栈为最基础的交付内容(页面+逻辑+页面、一些多媒体相关需求……)

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

原生C层.png

一些核心的系统服务和组件是C/C++编写的,我们可用AndroidNDK直接从原生代码访问某些原生平台库。

硬件抽象层(HAL):

硬件抽象层.png

提供硬件组件的封装,包括相机、传感器、蓝牙等。

Linux内核:

Linux内核.png

Android平台的基础是Linux内核。

APK构成:

  • AndroidManifest.xml:定义app中四大组件,以及相关权限
  • classes.dex:编写的java、kotlin等代码
  • res文件夹:资源文件夹(图片、颜色、字符串、搭建的XML布局文件)
  • lib文件夹:存放C/C++C编译的so文件(安全要求高、性能要求高、底层相关的文件)
  • META-INF文件夹:存放签名和证书,用于校验和安全(基本安全相关)

APK构成.png

开发工具

IDE: Android Studio

代码协同工具:Git

git.png

Workspace:工作区,本地电脑存放项目文件,自己指定位置

Remote Repository:远程仓库

Local Repository:本地仓库

Index/Stage:本地仓库暂存区

git常用命令:

git常用命令.png