这是我参与「第四届青训营 」笔记创作活动的的第1天
1. Android客户端知识图谱
作为开发者,面对的角色从大的方面可以分为用户、公司和自己,对不同的角色交付需要具备不同的知识技能,以下从不同的交付角度理解Android客户端的知识。
对外-为用户创造价值
- 第一层:页面+逻辑+数据
用户看到一个页面,页面上有逻辑,有内容
- 第二层:满足多样化的需求
- 第三层:体验+质量+安全+个性化
对内-减少公司成本
- 第一层:单人效能
- 第二层:团队效能
一个项目发展两年以上就会出现代码复杂度高编译慢、新增代码复杂扩展性差、耦合严重等问题。这种情况下就需要架构师在这样复杂的环境中梳理出一些关系。
跨平台可以理解为一套代码既可以在Android平台上运行,也能在ios上运行,甚至还能在pc端运行。
对自己
- 第一层:满足交付的基本技能
要掌握研发技能,完成需求,能完成对外交付
- 第二层:打造自身的技术高度
长板理论
- 第三层:君子不器,培养自己的综合素养
Android客户端发展路线
靠谱工程师:完成一个确定的需求,往上,能做一些模糊的东西...
2. Android系统
- 系统应用层
安装系统自带的软件和自己开发的软件。
- JavaAPI层
开发打交道最多。熟悉模块,不用一个一个读。
- 原生c++层和Android Runtime层
native主要是做多样化相关的。webkit是浏览相关的,media是播放相关的,OpenGL渲染。
- 硬件层
- Linux内核层
APK中包含的内容:
- AndroidManifest.xml 四大组件以及权限等
- res 资源文件,如图片、颜色、字符串,布局
- META—INF 签名、证书,用于校验和安全相关
- class.dex Java、kotlin代码
- lib文件夹