Android Things 是什么?它与标准 Android 的主要区别在哪里?

解读

面试官抛出这道题,通常不是想听你背定义,而是考察三点:

  1. 你是否真的在 IoT 边缘场景做过落地,还是只停留在手机开发;
  2. 能否把“系统裁剪、驱动、安全、维护成本”这些关键词串成闭环;
  3. 对 Google 在华服务不可用的现状有没有体感,能否给出国内替代思路。
    回答时要先一句话点明“Android Things 是 Google 官方裁剪的 IoT 版 Android”,然后立刻用“场景—差异—坑点”三层展开,最后落到“国内为什么没大规模用起来”,让面试官听到你的业务判断力。

知识点

  1. 系统定位:Android Things = AOSP 最小系统 + 内置 Weave/GMS Core + 原厂 BSP,面向无屏幕或弱交互设备,Google 承诺 3 年安全补丁。
  2. 裁剪维度:砍掉 Phone/Contacts/Launcher/Settings 等 40+ 系统 APK,Activity 栈只剩 1 个,默认关闭多窗口,Native 层移除 OpenGL ES 3.x 以上、摄像头 2/3 高级特性,把 SystemServer 里 12 个服务精简到 7 个。
  3. 驱动模型:提供 Peripheral I/O API(GPIO、PWM、I2C、SPI、UART),用 User-space Driver 框架把驱动写成 APK,系统通过 Things Peripheral Manager 服务以 Binder 调用,无需 HAL 重新编译,解决国内厂商 HAL 闭源痛点。
  4. 安全与维护:仍用 SELinux + dm-verity,但把 /system 分区做成只读 A/B 双槽,支持离线 OTA(ZIP 包放在 SD 卡即可升级),国内可魔改成局域网 MQTT 升级。
  5. 生命周期:Google 2021 年 2 月宣布不再接新客,存量支持到 2022 年底,国内主流转向 OpenHarmony、RT-Thread Smart 或自裁剪 AOSP。
  6. 性能差异:Zygote 预加载类从 2300+ 降到 400+,冷启动 APK 时间 350 ms → 120 ms;内存底噪 512 MB 设备上系统占用从 280 MB 压到 110 MB。
  7. 开发差异:Android Studio 自带模板,adb 通过 Wi-Fi 或 USB-Ethernet 调试,日志用 logcat -s PeripheralManager 过滤;国内板卡商(瑞芯微、全志)提供替换版 Settings APK 用来配网。

答案

Android Things 是 Google 在 2016 年推出的 IoT 专用 Android 发行版,目标是把“手机级开发生态”搬到无屏、弱屏、固定功能设备上。它与标准 Android 的核心区别可以概括为“三砍三加”:

  1. 砍系统组件:移除电话、联系人、Launcher、多窗口、OpenGL 高版本,系统 APK 从 60+ 减到 10 个以内,内存底噪下降 60%。

  2. 砍交互模型:默认全屏单任务,没有返回键概览键,Activity 栈深度为 1,适合咖啡机、智能灯这种“功能单一”场景。

  3. 砍维护成本:内置 A/B 无缝升级,Google 提供 3 年安全补丁,工厂只需做硬件 BSP,无需像手机那样二次深度定制。

  4. 加外设 API:新增 Peripheral I/O 与 User-space Driver 框架,把 GPIO、I2C、SPI、PWM 封装成 Java/Kotlin 接口,驱动可以像普通 APK 一样热升级,不需要重新编译 system.img。

  5. 加云端绑定:出厂集成 Weave 协议与 Google Assistant SDK,海外可直接语音配网;国内方案通常把 Weave 抽掉,换成阿里云 LinkVisual、华为 IoTDA 的 MQTT 通道。

  6. 加安全策略:系统分区只读,dm-verity 校验失败直接拒绝启动,Keystore 走 TEE,即使设备被物理拆解也无法读出私钥,满足国内《智能门锁安全规范》中“密钥不可导出”条款。

总结:Android Things = 最小可维护 AOSP + 硬件外设 Java 化 + 内置 OTA,让硬件厂商用 Android 生态快速做 IoT;但它 2021 年已停更,国内新项目更多转向 OpenHarmony 或自裁剪 AOSP + 自研 OTA 方案。

拓展思考

  1. 如果面试官追问“Google 停更后你们怎么维护”,可以答:把 Things 的 Peripheral I/O 源码(android.things.jar + libperipheralman.so)迁到 AOSP 11 以上,自己用 SystemUI 的“永不升级”机制做分区保护,再把 OTA 包做成双签名(厂商私钥 + 客户公钥),实现离线局域网升级,已在家用扫地机项目量产 12K。
  2. 若问到“为什么不用 RTOS 而用 Android”,给出数据:团队只有 8 人,用 Android 可复用原有 Kotlin 网络协议栈,开发周期从 6 个月压缩到 2 个月;虽然系统底噪多 80 MB,但设备内存 1 GB 足够,且 ART 的 GC 抖动在单任务场景下低于 5 ms,对电机控制无影响。
  3. 面试尾声可主动补一句:国内芯片厂已把 Android Things 的驱动框架移植到 RK3566、ESP32-S3(跑 Linux)上,并适配了鸿蒙的分布式软总线,实现“AndThings 驱动 + 鸿蒙配网”混合方案,面试官一般会顺势追问细节,你就掌握了节奏。