这是我参与「第四届青训营」笔记创作活动的的第1天
1. 交付概念
- 对外:为用户创造价值
- 第一层交付:页面+逻辑+数据
- eg: 做一个罗盘赌 ① 页面:轮盘、小球 ② 逻辑:小球转动到某个位置,贝塞尔曲线 ③ 数据:是否会中奖,也就是在转动之前 答案已经知道了,然后通过网络请求反馈转到了多少
- 第二层交付:多样性需求
- eg:短视频特效 拍摄需求 ① 页面布局需要几千行qaq ② 代码逻辑上万行qaq ③ 底层功能代码需要(画面处理/美颜)几万行qaq
- 多样需求: 1. 视频:视频格式/编解码 2. 直播:直播录制/直播流 3. AR 4. 图像:图像格式/拍照美颜 5. 游戏:游戏app
- 第三层交付:体验+质量+安全+个性化
- 深层次需求: 1. 体验:耗时/卡顿/资源占用 2. 质量:崩溃/错误 3. 安全:刷量/泄露/隐私 4. 个性化:端智能/精细场景
-对内:减少公司成本
- 第一层交付:单人效能
- 单人效率:1. 编译:Gradle编译/编译流程化 2. CICD: 发布/集成 3. 工具:云构建/机架
- 第二层交付:团队效能
- 团队效能**:**1.工程架构:组件化/代码重构 2. 业务架构:代码架构/开发范式 3.流程管理:定容/管理平台 4.跨平台:Flutter/Lynx
-自身:打造技术品牌
- 第一层交付:满足交付的基本技能
- 基本技能:1. Android系统:基本功能开发/Framework/了解系统 2. 语言娴熟:基本特性(Kotlin/Java)/语法和高效写法 3. 基本素养:代码质量/业务理解/协同合作
- 第二层交付:打造自身的技术高度
- 技术高度:1.系统底层:Android原理/Linux内核/Android Runtime 2. 架构设计: 大型App架构/复杂工程管理(eg: 抖音春晚项目) 3.业务能力: 大型项目协同/组织管理
- 第三层交付:君子不器,培养自己的综合素养
- 综合素养:1.思维:系统性/结构化/批判性思维 2. 认知:个人认知/自控力 3. 开放:技术好奇心/持续学习/开源
2. 认识安卓系统
1. 安卓层
- System Apps 系统应用层:自己开发的app和系统自带的app都在这一层 eg: 短信/日历
- JAVA API Framework:可以基于这些接口打造app 这一层的主要技术栈是最基础的交付内容,包括页面+逻辑+页面
- Native C++ libraries & Andriod Runtime:核心系统服务和组件是C++/C编写,可以用Android NDK 直接从原生代码访问一些原生平台库 如果有涉及音视频编解码、安全、质量、体验就要涉及这一层了
- HAL硬件抽象层:主要提供硬件组件的封装 eg:相机/传感器/蓝牙 比如想调用相机 android 系统将为该硬件组件加载库模块
- Linux内核:线程、内存管理
2. APK 构成
- AndroidManifest.xml:生命app中四大组件 以及权限等
- classes.dex: 所有编写的java kotlin代码
- res文件夹:资源文件夹:图片/颜色/字符串/XML 布局
- lib文件夹:存放C/C++代码编译成的so文件
- META-INF文件夹:存在签名和证书 用于校验和安全
3. Android 开发IDE: Android Studio
4. Git:
1. 本地设置:
git config --global user.name "your name"
git config --global user.email "youremail@github.com"
2. 创建仓库
git init
git clone <url>
git pull
3. 本地分支
git branch <branch-name>
git checkout <branch-name>
4. 提交
git add.
git commit -m "message"
git push