Android系统及客户端概览(第一次课)|青训营笔记

186 阅读4分钟

这是我参与「第四届青训营」笔记创作活动的第3天。今天是跟着第一节课做的笔记,课后将其整理了一下。

从移动生态讲起

从移动互联网讲起

人要了解世界,手机作为媒介,手机作为获取信息的最主要的媒介也不过十几年时间。

手机和人实际上是人和人的关系,产品经理从人获取需求,提交给客户端研发。

在移动互联网的世界里,客户端是离用户最近的研发。

App的背后是一个团队。

每个App都在争夺用户的唯一资源:用户的注意力。

移动互联网的市场规模很大

Android技术知识图谱

简化的模型

交付的含义:

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

    1.第一层交付:页面(安卓基础,复杂View)+ 逻辑(语言,代码结构)+ 数据(网络,存储)

    2.第二层交付:多样性需求:

    • 视频:1.视频格式,编解码 2.视频创作

    • 直播:1.直播录制 2.直播流

    • AR

    • 图像:1.图像格式 2.拍照美颜

    • 游戏:游戏App

    3.第三层交付:体验+质量+安全+个性化

    • 体验:耗时,卡顿,资源占用

    • 质量:崩溃,错误

    • 安全:刷量,泄漏,隐私

    • 个性化:端智能,精细场景


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

    1.第一层交付:单人效能

    • 编译:1.Gradle编译 2.编译流程优化

    • CICD:1.发布 2.集成

    • 工具:1.云构建 2.机架

    2.第二层交付:团队效能

    • 工程架构:1.组件化 2.代码重构

    • 业务架构:1.代码架构 2.开发范式

    • 流程管理:1.定容 2.管理平台

    • 跨平台:1.Flutter 2.Lynx


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

    1.第一层交付:满足交付的基本技能:

    • Android系统:1.基本功能开发 2.了解Framework 3.了解系统

    • 语言熟练:1.基本特性 2.语法和高效写法

    • 基本素养:1.代码质量 2.业务质量 3.协同合作

    2.第二层交付:打造自身的技术高度

    当你在某个领域可以达到行业前20%,你的职业生涯就延长了。

    当你在两个领域达到行业前20%,你的天花板就很高了。

    • 系统底层:1.Android原理 2.linux内核 3.Android Runtimel

    • 架构设计:1.大型App架构 2.复杂工程管理

    • 业务能力:1.大型项目协调 2.组织管理

    3.第三层交付:君子不器,培养自己的综合素养

    • 思维:1.系统性思维 2.结构化思维 3.批判性思维

    • 认知:1.个人认知 2.自控力

    • 开放:1.技术好奇心 2.持续学习 3.开源

IMG_0664.jpg

认识Android系统

系统分层

IMG_0665.jpg 1.系统应用层:各App所在的最上层,我们自己开发的App和系统自带的App都在这一层,两种App本质没有太大区别。

2.Java API层:这层是Android Framework提供给开发者的借口,我们可以给予这些接口打造各自的App。这一层主要的技术栈就是最基础的交付内容,包括页面+逻辑+页面,一些多媒体相关的需求也有成熟的API可以直接使用。

3.原生C/C++层和Android Runtime:一些核心的系统服务和组件是C/C++编写的,我们可以用Android NDK直接从原生代码访问某些原生平台库。从这一层往下,一些多样化的需求就可以被满足的很好,比如音视频编解码、安全、质量、体验等。

4.硬件抽象层(HAL):主要提供硬件组件的封装,包括相机、传感器和蓝牙等。当框架API要求访问设备硬件时,Android系统将为该硬件组件加载库模块。

5.Linux内核:Android平台的基础是Linux内核。例如,Android Runtime(ART)依靠Linux内核来执行底层功能,例如线程和内存管理。使用Linux内核可让Android利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。

APK的构成

AndroidManifest.xml:声明App中四大组件,以及权限等

classes.dex:所有编写的Java、Kotlin等代码

res文件夹:资源文件夹,包括图片、颜色、字符串,以及搭建的XML布局文件

lib文件夹:主要是存放C/C++代码编译成的so文件

META-INFO文件夹:存在签名和证书,用于校验和安全

认识工具

开发工具

Android开发用的IDE是Android Studio。

Git

Workspace:工作区,本地电脑存放项目文件的地方,自己来指定位置

Remote Repository:远程仓库,也就是代码存在的地方

Local Repository:本地仓库,也就是把代码拉取到本地存放的地方

Index/Stage:本地仓库的暂存区

1.本地设置:

git config --global user.name "your name"
git config --global user.email "youremain@github.com"

2.创建本地仓库

git init 
git clone<url>
git pull

3.建立本地分支

创建:git branch <branch-name>
切换:git checkout <branch-name>

遇事不决找Google!