这是我参与「第四届青训营 」笔记创作活动的第2天
从移动生态讲起
从移动互联网讲:
(1)手机是获取信息的最主要媒介。 (2)人与机器的关系本质上是人与人的关系,即产品经理从人获得需求,从世界获得数据,基于一定的组织规则,形成一定的需求,提交给客户端研发,客户端研发将需求使用代码实现放在手机上。 (3)客户端是离用户最近的研发 对于客户端研发:
Android知识图谱
- 对外(用户):为用户创造价值
第一层交付:页面+逻辑+数据
eg:俄罗斯轮盘赌
页面:轮盘、小球
逻辑:小球转到某一位置(贝塞尔曲线)
数据:是否会中奖,需要先进行网络请求获取(在转之前已知道结果)
知识图谱:
第二层交付:多样性需求
知识图谱:
第三层交付:体验+质量+安全+个性化
知识图谱:
- 对内(公司):对内为成本,对外为效益
第一层交付:单人效率(对于时间的分配)
单人效率不是指单个人的效率,是我们的工作能够提升团队的每个人的效率。
技术图谱:
第二层效率:团队效率
代码“肥胖”的危害:复杂程度高,编译慢;新增代码复杂,扩展性差;耦合严重(架构师:梳理信息以提高团队效能)
技术图谱:
- 自身(个人):个人的技术品牌
第一层交付:满足交付的基本技能
技术图谱:
第二层交付:打造自身的技术高度
木桶理论 长板理论
技术图谱:
第三层交付:培养自己的综合素养
技术图谱:
人们为了逃避真正的思考,是可以做任何事情的。 --王兴
有三样东西是极端坚硬的,钢铁、钻石以及认识自己。--富兰克林
程序员发展金字塔:
小结:
交付含义:
对外(第一层、第二层、第三层)
对内(第一层、第二层)
对自身(第一层、第二层、第三层)
认识Android系统
Android系统:
系统应用层(主要):
App所在最上层,自行开发及自带的App都在这一层,两种App可相互调用。
Java API层(主要):
Android Framework提供给开发者的接口。主要技术栈为最基础的交付内容(页面+逻辑+页面、一些多媒体相关需求……)
原生C/C++层和Android Runtime:
一些核心的系统服务和组件是C/C++编写的,我们可用AndroidNDK直接从原生代码访问某些原生平台库。
硬件抽象层(HAL):
提供硬件组件的封装,包括相机、传感器、蓝牙等。
Linux内核:
Android平台的基础是Linux内核。
APK构成:
- AndroidManifest.xml:定义app中四大组件,以及相关权限
- classes.dex:编写的java、kotlin等代码
- res文件夹:资源文件夹(图片、颜色、字符串、搭建的XML布局文件)
- lib文件夹:存放C/C++C编译的so文件(安全要求高、性能要求高、底层相关的文件)
- META-INF文件夹:存放签名和证书,用于校验和安全(基本安全相关)
开发工具
IDE: Android Studio
代码协同工具:Git
Workspace:工作区,本地电脑存放项目文件,自己指定位置
Remote Repository:远程仓库
Local Repository:本地仓库
Index/Stage:本地仓库暂存区
git常用命令: