这是我参与「第四届青训营 」笔记创作活动的第1天
Android知识图谱和开发工具
课程重点
- 移动生态
- 通过交付认识Android知识图谱
- Android系统的层次划分和apk构成
- 开发工具
从宏观讲安卓
移动生态
人通过手机了解世界。人与手机和软件之间的关系,本质上际上是人和人的关系。客户端开发直接提供App和信息,是离客户最近的研发。产品经理向用户收集需求,从世界搜集信息,基于一定的组织规则,提供需求给客户端研发。客户端实现交互、功能,服务端提供内容、数据。客户端与服务端组合形成安装包,通过QA测试后交付使用。
手机在最近十几年才成为获取信息的最主要媒介。2007 iPhone,2008 Android。
App赛道的宽度可以是用户平均每天在App中消耗的时间,我想这是注意力资源的占用比例。客户端要争取的唯一资源是用户的注意力。
用户花费时长:短视频 > 社交 > 咨询 > 长视频 > 游戏 > 购物 > 中视频 > 阅读 > 生活。该排序不代表产品体验和公司市值。
Android知识图谱 & 交付的含义
交付有什么层次、什么技能点,如何形成完整的知识图谱?
在公司内面向的用户:对外(用户)——自身——对内(公司) 对外:为用户创造价值 对内:成本,对接 自身:自身也是产品,自身的技术品牌
对外
第一层交付:页面 + 逻辑 + 数据。轮盘模拟,在用户转动之前,是否中奖的数据就已经通过网络请求获取到了。
简单交付{
页面: [Android基础, 复杂View],
逻辑: [语言, 代码结构],
数据: [网络, 存储]
}
第二层交付:多样性需求
其中每一项都能支撑一个产业
多样性需求{
视频{
[视频格式, 编码解码],
视频创作
},
直播{
直播录制,
直播流
},
AR,
图像{
图像格式,
拍照美颜
},
游戏
}
第三层交付:体验+质量+安全+个性化 耗电量、违规信息管控、羊毛党有多少、
深层次需求{
体验{
耗时,
卡顿,
资源占用
},
质量{
崩溃,
错误
},
安全{
刷量,
泄露,
隐私
},
个性化{
端智能,
精细场景
}
}
注:
①很多崩溃发生在安卓底层。
②端智能:把云端计算搬到客户端
对内
第一层交付:单人效能
单人效率{
编译{
Gradle编译,
编译流程优化
},
CICD{
发布,
集成
},
工具{
云构建,
机架
}
}
第二层交付:团队效能 多人提交可能导致团队效能折损
团队效能{
工程架构{
组件化,
代码重构
},
业务重构{
代码架构,
开发范式
},
流程管理{
定容,
管理平台
},
跨平台{
Flutter,
Lynx
}
}
自身——打造个人技术品牌
第一层交付:满足交付的基本技能
基本技能{
Android系统{
基本功能开发,
了解FrameWork,
了解系统
},
语言熟练{
基本特性,
语法和高效写法
},
基本素养{
代码质量,
业务理解,
协同合作
}
}
第二层交付:打造自身的技术高度
必须在某项或某几项技术上比较突出。“刘翔只比我快几秒”,别忽视细微差异。
长板:在某个领域达到行业的前20%
技术高度{
系统底层{
Android原理,
linux内核,
Android Runtime
},
架构设计{
大型App架构,
复杂工程管理
},
业务能力{
大型项目协同,
组织管理
}
}
第三层交付:培养自己的综合素养
综合素养{
思维{
系统性思维,
结构化思维,
批判性思维
},
认知{
个人认知,
自控力
},
开放{
技术好奇心,
持续学习,
开源
}
}
培养综合素质,要先做到不逃避思考和挑战。
认识Android系统
层次
- 系统应用层
- Java API Framework
- C/C++原生库、Android Runtime
- 硬件抽象层
- Linux 内核
计导课程中有类似的分层。
APK的构成
- AndroidManifest.xml: 生命App中四大组件以及权限
- class.dex: Java、Kotlin代码
- res文件夹:资源文件夹、存放图片、颜色、字符串和UI布局
- lib文件夹:主要存放C/C++代码编译成的so文件
- META-INF文件夹:存放签名和证书,用于校验和安全
开发工具
Android Studio,下载和配置参考官方文档即可。
Git{
Workspace: 工作区,本地电脑存放项目文件的地方,
Remote Repository: 远程仓库,代码存放的地方,
Local Repository: 本地仓库,本地存放代码的地方,
Index/Stage: 本地仓库的暂存区
}
Git的使用
- 本地设置
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
- 创建本地仓库
git init // 建立仓库
git clone <url> // clone到本地
git pull
- 建立本地分支
git branch <branch-name> // 创建
git checkout <branch-name> // 切换
- 提交
git add .
git commit -m "commit_info"
git push
其他建议
在客户端可以找到几乎所有技能的试验场。
打工人应该精通某种技能。
在移动互联网要不断接受挑战。