01 它是干嘛的
安卓是一套为触屏手机设计的操作系统,负责管理硬件、运行应用、调度资源。它的关键不在于技术本身,而在于「开源免费给厂商用」这个策略:手机厂不必自己研发系统,改了就能装到自家手机上卖,于是智能手机的价格与门槛被迅速拉低,应用开发者也有了统一的平台。
02 为什么会有它
2007 年之前:换一部手机,等于换一套完全不同的世界
在安卓出现之前,手机系统是诸侯割据的:诺基亚的塞班、微软的 Windows Mobile、黑莓各占一块,彼此完全不兼容。开发者想让应用覆盖尽可能多的人,就得为每个系统、甚至每个型号单独写一遍,屏幕大小、按钮布局、处理器都不一样,工作量翻好几倍。
更让用户痛苦的是运营商。手机出厂时系统里预装什么、能装什么、能不能更新,往往由运营商说了算。你想装一个软件,可能发现被锁死了;系统出了安全漏洞,等厂商推送更新要等很久,甚至永远等不到。手机更像「运营商定制的终端」,而不像「用户自己的设备」。
谷歌在 2005 年前后收购了做手机系统的安卓团队,2007 年联合一批手机厂、芯片厂和运营商成立开放手机联盟,宣布把这套系统开源、免费提供。2008 年第一台安卓手机上市。这套做法把行业规则翻了过来:软件不必再绑死在一家厂商身上,厂商专注做硬件和差异化,开发者面对一个统一平台,用户第一次能像用电脑一样自由地装软件。
03 它怎么工作
安卓的启动是一条自下而上的链条:先由固件把内核拉起来,内核管好硬件,再由系统服务把一个个「管家」启动起来,最后应用框架就绪,用户的应用才有地方运行。
从按下电源到打开一个应用:安卓开机与运行的五个阶段
- 1① 引导与内核启动
按下电源后,手机的固件先检查硬件,加载 Linux 内核。内核负责内存、进程、驱动等最底层的资源管理,是整个系统的地基。
- 2② 硬件抽象层与驱动就绪
内核之上有一层转接层,把摄像头、蓝牙、屏幕等各厂商不同的硬件统一成标准接口,让上层系统不必关心具体是哪家的芯片。
- 3③ 系统服务启动
一套叫系统服务的东西被逐个拉起:窗口管理、通知、电量、位置、网络等。这些是常驻后台的管家,应用的很多能力都要通过它们来实现。
- 4④ 应用框架就绪
框架层把系统能力包装成开发者可直接调用的接口,比如「显示一个通知」「请求定位权限」,开发者不必直接和硬件打交道。
- 5⑤ 启动并隔离应用
每个应用运行在自己的独立沙箱里,只能访问被授予的权限。这样即使某个应用写得很糟或藏有恶意代码,也很难直接伤害系统和其他应用。
04 谁在用它
厂商基于开源版本定制自家的系统界面与功能,装到自家手机上,省掉从零研发操作系统的巨大成本。
写一套应用即可在众多品牌的手机上运行,一套代码覆盖绝大多数移动设备。
扫码枪、收银机、车机、电视等专用设备,也可以基于安卓定制,直接接入庞大的应用生态。
通过应用商店分发应用、统一账号登录、云同步照片通讯录,把设备与谷歌服务连成一体。
05 怎么用
普通用户开机即用;开发者上手需要一个开发工具与一点 Java 或 Kotlin 基础。
- 01普通用户:在手机设置里管理应用、权限、存储与更新,应用统一从应用商店安装。
- 02开发者第一步:安装官方开发工具 Android Studio,它自带模拟器,不必真的买手机就能调试。
- 03新建一个项目,选择语言(Kotlin 是官方首选),运行后会在模拟器里看到第一个界面。
- 04用命令行工具构建与安装:连接真机后执行安装命令即可把应用装到手机上。
- 05需要上架时,把应用打包签名后提交到应用商店,通过审核后用户即可下载。
# 1. 构建调试版应用包
./gradlew assembleDebug
# 2. 查看是否检测到连接的手机或模拟器
adb devices
# 3. 把应用安装到设备上
adb install app/build/outputs/apk/debug/app-debug.apk
# 4. 查看应用运行日志(排查崩溃时最常用)
adb logcat避坑提示
- !不同厂商的系统版本与定制程度不同,开发时要尽量在多个版本上测试,别只在最新旗舰机上验证。
- !权限要按需申请,一上来就索要一堆权限,用户很可能直接拒绝安装。
- !系统更新是否能到达用户,取决于厂商与机型,这是安卓生态长期存在的碎片化问题。
06 关键概念
- 开源(Open Source)
- 源代码公开,任何人都可以使用、修改和分发,安卓的快速普及正源于此。
- 内核(Kernel)
- 操作系统最底层、直接管理硬件与进程的部分,安卓内核基于 Linux。
- 沙箱
- 把每个应用关在独立的「房间」里,限制它能碰到的资源,一个应用出事不牵连全局。
- 碎片化
- 市面上同时存在大量系统版本与机型,导致同一应用的表现参差不齐。