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

85 阅读3分钟

这是我参与「第四届青训营」笔记创作活动的的第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