Android客户端青训营课程(第一课)笔记|青训营笔记

122 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第2天
该笔记主要是对青训营第一课知识点的简单总结和自己的小思考。

移动生态

移动互联网可以抽象建模成人通过手机等移动设备媒介上的客户端来了解世界(而这不过是近十几年的事,相对于人类发展只是极小部分),表面事人和机器的关系,其实是人与人的关系
不仅依靠客户端开发,还有团队其他岗位(如产品经理、服务端开发、QA等)

各个APP的赛道是不一样的,所能占用的人们的注意力(使用时长)是不同的。
但不同赛道的APP体量并不能用时长来简单对比。

Android知识图谱

【以下标下划线部分为存在对应青训营课程】

简化的模型:

对外(用户):为用户创造价值

第一层交付:页面(Android基础\underline{Android基础}复杂View\underline{复杂View})+逻辑(语言、代码结构)+数据(网络、存储\underline{网络、存储}
例:轮盘赌
页面:轮盘、小球
逻辑:小球转动到某个位置,贝塞尔曲线
数据:是否会中奖

第二层交付:多样性需求=视频(视频格式、编解码、视频创作)+直播(直播录制、直播流\underline{直播录制、直播流})+AR+图像(图像格式、拍照美颜)+游戏(游戏App)
为实现多样化需求往往需要成千上万行甚至是更多代码的实现

第三层交付:深层次需求=体验(耗时、卡顿、资源占用\underline{耗时、卡顿、资源占用})+质量(崩溃、错误)+安全(刷量、泄露、隐私)+个性化(端智能、精细场景\underline{端智能、精细场景}
光抖音就就有非常大的影响,规模带来的利益也吸引了其他的灰色产业

对内(公司):对内都是成本,对外才是收益

第一层交付:单人效益=编译(Gradle编译、编译流程优化)+CICD(发布、集成)+工具(云构建、机架)
编译时间可以充分利用起来摸鱼学习

第二层交付:团队效益=工程效益(组件化、代码重构\underline{组件化、代码重构})+业务架构(代码架构、开发范式)+流程管理(定容、管理平台)+跨平台(Flutter、Lynx)
团队项目经过多次迭代容易臃肿、耦合度过高

自身(个人):自身也是产品,自身的技术品牌

第一层交付:满足交付的基本技能=Android系统(基本功能开发、了解FrameWork、了解系统)+语言熟练(基本特性、语法和高效写法)+基本素养(代码质量、业务理解、协同合作\underline{代码质量、业务理解、协同合作}
起步阶段所基础需要的,但不能长久支撑全程

第二层交付:打造自身的技术高度=系统底层(Android原理、Linux内核、Android\underline{Android}runtimel\underline{runtimel})+架构设计(大型App架构、复杂工程管理)+业务能力(大型项目协同、组织管理)
木桶理论or长板理论,长板的顶尖优势会具有不可替代性,带来竞争优势

第三层交付:君子不器,培养自己的综合素养=思维(系统性思维、结构化思维、批判性思维)+认知(个人认知、自控力)+开放(技术好奇心、持续学习、开源)
人们为了逃避真正的思考,是可以做任何事情的

程序员发展路径是多样的,每个阶段都要面临不同的难题

几乎所有的技能都能在客户端找到试验场
拥有自己的长板,增加行业长度
移动互联网是一条能够持续成长的道路

认识Android系统

安卓系统分层

系统应用层:各种App(包括系统自带的)
Java API层:Android Framework提供的接口
原生C/C++层和Android Runtime(ART):核心的系统服务和组件
硬件抽象层(HAL):硬件组件的封装
Linux内核:使用Linux内核可让Android利用主要安全功能
image.png

APK构成

AndroidManifest.xml:app中的四大组件,以及权限
classes.dex:所有编写的java、kotlin等代码
res文件夹:资源文件夹,包括图片、颜色、字符串,以及搭建的xml布局文件
lib文件夹:主要是存放C/C++代码编译成的so文件
META-INF文件夹:存在签名和证书,用于校验和安全

开发工具

Android Studio

Git
image.png
workspace:工作区,本地电脑存放项目文件的文件
Remote Repository:远程仓库,代码存在的地方
Local Respository:本地仓库:把代码拉渠道本地存放的地方
Index/Stage:本地仓库的暂存区

使用命令
【最好查看文档】