这是我参与「第四届青训营 」笔记创作活动的第1天
(内容为《Android系统及客户端概览》课程笔记)
一、引入
在这次课中,老师主要为我们介绍了互联网开发的运作方式和生态环境、Android开发者所需要具备的知识技能以及开发过程中要使用的工具。
二、课堂收获
课程分为四个板块,以下是我在各个板块中的所得。
01.从移动生态讲起
客户端作为离用户最近的研发,主管的是app的功能与交互。一个APP的成功研发,背后是一整个团队。团队成员各司其职的同时相互协作,能够创造出巨大的价值。
02.Android知识图谱
作为客户端开发者,要面对的交付任务分为多方面:对外向APP用户进行交付,对内向就职的公司团队进行交付,最后回归到对自我的交付,这同时也强化了对内外二者的交付。如此形成良性循环。而每一方面的交付又可被细化为不同层次。
1-1 对外-第一层交付
对于用户的第一层交互,是最首要也最基本的“页面+逻辑+数据”交付。这三部分结合在一起,能够将基本的功能完整稳定地实现。
所需的知识点可包含以下方面——
页面:Android基础-复杂View
逻辑:语言-代码结构
数据:网络-存储
1-2 对外-第二层交付
用户最简单的功能需求得到满足后,研发方还应满足其多样化的诉求,这就需要进行一些更高级别功能的开发,这些功能的实现动辄涉及数万行代码,也对开发者的技术有进一步的要求。例如直播、游戏等。
所需的知识点可包含以下方面——
视频:视频格式-编解码
直播:直播录制-直播流
图像:图像格式-拍照美颜
游戏:游戏APP
AR
1-3 对外-第三层交付
第三层交付,需要满足用户使用APP过程中的最深层次需求。同时服务一定数量级的用户时如何维持稳定流畅的体验感?如何避免过多错误与崩溃影响APP使用质量?如何保证用户的财产安全、隐私安全?如何实现对用户进行合适的个性化内容推送?这些都是第三层交付中要面对的问题。
所需的知识点可包含以下方面——
体验:耗时-卡顿-资源占用
质量:崩溃-错误
安全:刷量-泄露-隐私
个性化:端智能-精细场景
2-1 对内-第一层交付
这一层要义在于提升个人的工作效率,少些蹉跎与“磨洋工”。单人效能增高,公司成本也就能降低。
技术点——
编译:Gradle编译-编译流程优化
CICD:发布-集成
工具:云构建-机架
2-2 对内-第二层交付
这一层需要保证团队效能。团队中成员形成高质量的协作,产生的高效能极大程度缩减了项目研发时长。(例:抖音春晚活动,接到需求后仅27天便完成上线)涉及方面——
工程架构:组件化-代码重构
业务架构:代码架构-开发范式
流程管理:定容-管理平台
跨平台:Flutter-Lynx
3-1 对己-第一层交付
作为开发者进行Android客户端研发,需要掌握一些基本技能作为支撑——
Android系统:基本功能开发-了解FrameWork-了解系统
语言熟练:基本特性-语法和高校写法
基本素养:代码质量-业务理解-协同合作
3-2 对己-第二层交付
在掌握基本技能的基础上,提升自己的技术高度,打造“长板”延长职业生涯——
系统底层:Android原理-Linux内核-Android Runtime
架构设计:大型APP架构-复杂工程管理
业务能力:大型项目协同-组织管理
3-3 对己-第三层交付
“Stay hungry&Stay foolish”
学海无涯,对技术的探索永无止境。这需要我们坚持提升思维认知,不断了解学习新兴技术,持续充实自己的知识库,打磨综合素养不“自满”——
思维:系统性思维-结构化思维-批判性思维
认知:个人认知-自控力
开放:技术好奇心-持续学习-开源
03.认识Android系统
(图片自课件下载)
系统应用层:APP最上层
Java API层:开发者接口
原生C/C++层 & Android Runtime
硬件抽象层(HAL):提供硬件组件的封装
Linux内核:Android平台基础
APK的构成
课件中对各个部分的解读——
-
AndroidManifest.xml :生命app中四大组件,权限等
-
classes.dex :所有编写的java
-
res文件夹 :资源文件夹→包括图片、颜色、字符串以及搭建的XML布局文件
-
META-INF文件夹:存在签名和证书,用于校验和安全
-
lib文件夹:主要存放C/C++代码编译成的so文件
04.认识工具
Android Studio
Android开发环境
下载地址:developer.android.google.cn/studio
Git
分布式版本控制系统
三、总结
整节课的氛围十分轻松,老师以过来人的身份为我们讲述了许多他在实际开发中接触到的案例,让我们始初得窥Android开发世界的概貌,也对我们今后的职业发展和自我提升方向产生了诸多启发。感谢。