ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

嵌入式Linux与安卓屏选型:开机时间、稳定性与成本全对比

嵌入式Linux与安卓屏选型:开机时间、稳定性与成本全对比 去年接手一个工业设备的显示交互项目客户只提了三个要求上电亮得快、别死机、单台成本压住。团队四个人三个方案在桌上吵了一星期最后发现争的其实不是屏幕尺寸、不是分辨率而是底层系统选谁——嵌入式 Linux 还是安卓。这个决定一旦做错前面省下的时间后面全得加倍还回去。这类对比文章网上不少但大多是参数罗列什么“Linux 实时性好”“安卓生态丰富”这种空话真到自己选型时根本帮不上忙。我直接把这次项目里摸底、打样、试产、跑到中试的完整数据放出来再把踩过的坑一条条列清楚。不管你是做工业 HMI、商业显示终端、智能网关配套屏还是在设备选型上被老板逼着拍板的人这份对比至少能帮你少走两个月的弯路。1. 两种屏的底层差异不搞清楚架构对比就是空中楼阁选型对比最容易掉进去的坑就是拿应用层的体验去倒推底层系统的优劣。安卓跑起来顺滑、动画炫就觉得 Linux 屏“土”嵌入式 Linux 开机快、稳定就觉得安卓屏“重”。这种印象流在个人消费场景里可能没大问题但放到产品选型上必须先搞清楚两套系统到底长什么样。1.1 嵌入式 Linux 屏的本质是一台“专用的精简电脑”嵌入式 Linux 屏的核心特征是它只为一个目的服务。主控芯片通常选的是工业级或商业级的 ARM 处理器比如全志、瑞芯微、NXP 的 i.MX 系列或者更轻量的 Cortex-M 系列加外部 Linux 内核。系统做的是减法——内核按需裁剪去掉用不到的驱动和子系统文件系统用 buildroot 或者 Yocto 定制能少一个软件包就少一个启动流程从 bootloader 到 kernel 再到 init 进程每一步都精确控制。这里的关键点在于嵌入式 Linux 是“为这个硬件、这个应用量身裁剪的”没有多余的进程、没有后台服务、没有预装软件在做你不知道的事。我用 buildroot 构建的一个最小系统根文件系统只有 60MB 左右跑起来之后内存占用不到 256MB还剩一大半闲着。这种精简带来两个直接好处一是启动路径短上电到出界面能做到两三秒二是故障面窄系统里每多一个进程就多一个崩溃的可能精简到只剩必要组件稳定性自然就上去了。另一个容易忽略的差异是显示链路。嵌入式 Linux 屏的 UI 一般直接运行在 framebuffer 或者 GPU 之上绕开了 Window Manager 这层重量级组件。渲染链路越短画面出错的概率越低、响应延迟越可控。代价就是 UI 生态受限复杂动画、多窗口交互做起来费劲你得在轻量和丰富之间做取舍。1.2 安卓屏的出发点相反兼容性优先的“通用系统”安卓屏的思路从一开始就跟嵌入式 Linux 相反它追求的是在一个通用框架下兼容海量硬件和应用。底层有 Linux 内核中间层是 ART 虚拟机、HAL 硬件抽象层上层是 Activity Manager、Window Manager 这些重量级服务。每一层都为了通用性做了大量抽象简化了应用开发的复杂度却拖长了启动流程、占用了更多资源。一台安卓屏的典型配置主控至少是四核 A53 起步内存 2GB 才算舒服存储 16GB 是常态。系统镜像动不动几个 GB开机要经过 kernel 启动、init 进程拉起、Zygote 孵化、SystemServer 启动几十个服务、Launcher 加载这一整套流程时间很难压到 5 秒以内。即便做了深度定制砍掉不用的系统应用、去掉开机动画也很难把启动时间做到嵌入式 Linux 的量级——因为 Android 框架的服务依赖链就摆在那里你可以删但不能删到残缺删到一定程度系统本身就不稳了。安卓屏的优势在于应用生态和交互上限。如果你需要跑第三方 APK、需要复杂的 Web 交互、需要频繁更新 UI 界面安卓几乎是唯一的选择。嵌入式 Linux 做这些事情的成本高到离谱而安卓一通百通。所以安卓屏本质上是一个“为你省去系统层开发让你专注应用层”的平台方案。1.3 适用场景的边界工业显示 vs 商业交互从实际落地场景来看这两类屏的分界线其实很清楚。嵌入式 Linux 屏的阵地是那些“只需做好一件事”的地方工业现场的 HMI 人机界面、医疗设备的状态显示、充电桩的交互面板、电梯楼层显示、数控机床的操作面板。这些场景的共同特点是交互简单、逻辑固定、环境恶劣、要求长时间稳定运行。安卓屏的阵地则偏向“需要灵活交互和数据展示”的场景商业自助终端、智能会议室预约屏、连锁门店的广告和信息发布屏、楼宇对讲主机。这些场景的共同点是 UI 更新频繁、需要跑第三方应用、对动画和触摸体验有要求、网络交互占比较高。我见过一个做充电桩的客户最初选了安卓屏理由很直接——开发快。结果量产之后问题不断屏在户外高温下偶发重启每次重启要等几十秒才能回到界面用户在充电桩前干等投诉电话打到客服那里。后来换回嵌入式 Linux 方案开发周期是长了些但重启问题从根上消失了。这个案例很典型——不是安卓不行而是场景不匹配。2. 开机时间最直观的体感差异也是最容易优化的指标开机时间之所以是选型时的第一关注点因为它直接暴露在用户面前。设备上电后屏幕一直黑着、转着圈用户心里的耐心余额就开始倒计时。工业设备可能还好商业场景里每一秒的等待都在消耗用户体验。但这里有个认知误区需要先纠正开机时间不是一个天生固定的值而是系统架构、启动流程、应用设计共同决定的结果。对比开机时间本质上是对比两套系统的优化空间和优化成本。2.1 嵌入式 Linux 如何把开机压进 3 秒嵌入式 Linux 的启动优化是门系统活套路固定但细节魔鬼。第一步从 bootloader 开刀U-Boot 裁剪掉用不到的驱动和命令关闭不必要的延时把 bootdelay 设成 0。有些项目会直接在 U-Boot 里跳过文件系统检查、关闭 LCD 背光等待让 U-Boot 到内核的时间压到 300 毫秒以内。第二步是内核。裁剪掉不需要的驱动模块关闭多余的内核配置项把必要的驱动编进内核而不是模块——编译进内核的驱动在启动时直接初始化省去模块加载的等待。开启 initramfs 选项将最小根文件系统打包进内核镜像内存解压直接挂载绕开块设备初始化的慢速路径。这一套下来从上电到内核跑起来能压在 1 秒以内。第三步是用户空间。嵌入式 Linux 常见的 init 方式分为 busybox init、systemd、sysvinit 三种。追求极致开机速度的项目建议直接放弃 systemd改用 busybox init 或自定义 init 进程手动控制每个服务的启动顺序把应用进程的启动放在最前面。我做过一个极端的优化案例在 A7 双核 1.2GHz、128MB 内存的硬件上从按下电源到 APP 画出第一帧画面整个时间控制在 1.8 秒客户验收时惊讶得不敢置信。但需要提醒的是开机时间优化到这个程度付出的代价是舍弃了很多 Linux 的标准机制——比如系统日志服务、动态设备管理udev、网络配置服务。这些服务不是没用而是在“快速出界面”这个最高优先级目标下它们可以延后启动或者干脆不要。做产品要有取舍不能既要极速开机又要功能全备。2.2 安卓的启动链长在哪里怎么压缩安卓系统的启动流程本质上是一个“串行拉起服务”的过程。kernel 启动之后init 进程解析 init.rc 脚本依次启动属性服务、vold卷管理、netd网络守护、zygote应用孵化器、system_server系统服务管理器。system_server 内部又要启动 WindowManager、ActivityManager、PackageManager 等几十个服务。每一步都有固定的初始化逻辑压缩空间有限。常见的优化手段包括移除不用的系统应用和库文件精简 system.img、预置 APK 走 overlay 机制减少首装扫描、裁剪开机动画甚至直接关闭、将 Launcher 预加载并缓存到内存、关闭不需要的系统服务如 NFC、蓝牙相关的服务、打印服务等还可以在 init.rc 中把核心服务改成并行启动。这些手段全部用上的情况下一台配置在 A53 四核 2GB 内存的设备能从上电到 Launcher 显示压缩到 5 到 6 秒已经算不错了。如果想更进一步压进 4 秒以内就要做更激进的改动比如跳过系统签名验证、精简 PackageManager 扫描逻辑、直接拉起定制桌面而不经过 Launcher但这些操作涉及系统稳定性风险量产后维护成本陡增。安卓 11 及以上还引入了“解耦系统更新”的概念部分系统组件可以通过应用商店更新这在功能迭代上很灵活但对启动流程来说每次更新都可能影响启动组件的版本兼容性——有些项目更新后启动时间莫名多出两秒排查起来非常费劲。2.3 开机时间的真实数据对比把两类屏的实测数据放在一起看更直观。以同样瑞芯微 RV1126 平台做的嵌入式 Linux 屏和 RK3566 平台做的安卓屏做对比硬件档次不同但这样的组合恰恰是工业选型中最常见的搭配——嵌入式 Linux 用低一档的硬件也能实现比安卓更快的启动。阶段嵌入式 Linux精简系统安卓深度定制上电到 bootloader0.3s0.5sbootloader 到内核启动完成0.8s1.5s内核到用户空间应用就绪0.7s3.5s应用出第一帧画面1.8s总5.8s总这里面的差距核心不在硬件性能而在系统架构。安卓的系统服务开销是 Linux 的数十倍以上而这些开销的绝大部分在“出界面”之前是用户感知不到的。换句话说你为一个通用系统框架买单但这个框架的大部分功能在固定用途设备上根本用不上。但老实说开机时间虽然重要却不应该是选型的唯一决定因素。多 3 秒的开机时间如果换来了更高的交互灵活度和更低的开发成本在一些场景下值得接受关键是要清楚产品定位。3. 稳定性对比谁的“不死机”更可靠谁的“不死机”更费心稳定性是所有工业设备和商业设备选型的底线。开机慢一点用户可以忍频繁死机重启就完全不能接受。两类系统在“稳定”这件事上的思路截然不同嵌入式 Linux 靠精简来降低故障概率安卓靠资源冗余来容忍错误发生。3.1 嵌入式 Linux 的稳定来自“少即是多”嵌入式 Linux 的稳定性逻辑一句话概括就是“系统里没什么东西可以坏”。没有后台服务自动更新、没有应用商店推送新版本、没有用户安装第三方软件。系统启动后运行的就是那几个固定的应用进程占用固定的资源访问固定的硬件。这种静态化的运行模式天然降低了系统故障的概率。在实际运行中嵌入式 Linux 最常见的不稳定源反而来自硬件——比如外部看门狗没有正确喂狗、供电纹波过大导致主控异常复位、DDR 走线质量差导致内存读写偶发错误。这些问题跟操作系统无关是硬件设计层面的问题。操作系统本身反而很少是崩溃点。我在多个项目里遇到过嵌入式 Linux 设备连续运行半年以上不重启的情况这在安卓设备上几乎不可想象。不过嵌入式 Linux 的稳定是有前提的这个前提就是“开发期做足功课”。AI 文件这篇先按下不表你在选型时要意识到的关键是嵌入式 Linux 把稳定的责任前置到了开发阶段系统一旦交付改动极少稳定性高度依赖前期的代码质量、驱动正确性和环境适应性验证。如果前期做不好后期排查问题的难度极大——因为系统精简了可观测性也弱了很多问题只能靠加打印重新编译来定位。3.2 安卓的稳定来自“容忍犯错”的架构设计安卓系统的稳定性设计跟 Linux 是两个路线。安卓构建了一个庞大的“错误容忍机制”应用进程崩溃ActivityManager 会把进程杀掉并重启用户看到的是“应用已停止”的弹窗系统本身不受影响系统服务崩溃Zygote 会重新孵化一个 SystemServer内存不足Low Memory Killer 会按优先级回收进程。这套机制的设计哲学是既然系统复杂、组件众多、错误不可避免那就让错误被隔离在局部不至于让整个系统瘫痪。好处是明显的部分应用捕获到异常后可以提示用户闪退而系统还能继续跑。代价是这些“容忍机制”本身也在消耗资源维持这些机制需要更昂贵的内存和 CPU。实际项目中最常见的安卓稳定性问题反而不是系统本身崩溃而是资源竞争内存泄漏导致系统越来越卡、存储空间被日志和缓存占满导致应用无法写入、后台应用疯狂耗电导致温升降频。这些问题在嵌入式 Linux 上几乎不存在不是因为 Linux 手机做得多好而是因为 Linux 屏根本不给第三方应用常驻后台的机会。3.3 长稳运行中的隐性差异网络依赖、OTA 和看门狗两类屏放到真实环境中长期跑有几个隐性差异必须提前预判。第一是网络依赖。嵌入式 Linux 屏即使完全断网也能保持全部功能正常因为核心逻辑都在本地安卓屏则对网络有天然的依赖尤其是一些使用了云服务的应用断网后要么提示错误要么进入降级模式用户观感大打折扣。我见过一个商业项目安卓屏因为后台频繁尝试连接失效的云服务器导致 CPU 占用居高不下界面卡顿到无法操作最后只能断网摆放——这显然是产品设计的问题但底层架构对网络依赖的敏感性在选型时就要想清楚。第二是 OTA 升级。嵌入式 Linux 的 OTA 方案相对简单一般就是 A/B 分区切换或者整体擦写升级失败的风险点主要在断电保护做好双备份和恢复引导就问题不大。安卓的 OTA 就复杂得多系统分区、用户数据分区、厂商分区的差异、签名校验、版本兼容、升级后第一次启动的耗时都是坑。安卓 12 之后引入的 Virtual A/B 虽然让升级安全性提升不少但镜像体积和存储要求也水涨船高。第三是看门狗策略。嵌入式 Linux 项目的看门狗是标配要么内核层配合硬件 watchdog要么应用层自己喂狗异常卡死自动复位。安卓设备要做到同样的看门狗效果就复杂多了系统卡死可能发生在内核层、虚拟机层、系统服务层不同层级的卡死需要用不同的手段检测和复位工程复杂度不在一个量级。4. 成本账不只看 BOM要看全生命周期的总成本成本是选型决策中权重最高但也最容易算糊涂的项。多数人对比成本只看物料成本这是大错特错。硬件成本只是显性的第一项后面的研发投入、量产维护、问题排查、系统升级每一项都是隐性成本。方案选错省下的几百块物料成本可能在后续的某一轮软件调试里全搭进去还不够。4.1 物料成本嵌入式 Linux 的账面优势正在缩小单看 BOM嵌入式 Linux 屏的优势是明显的。因为系统精简可以选用更低的处理器的方案、更小的内存和存储三星、海力士等在工业领域广泛应用的 eMMC价格随行就市但总的物料差额摆在那里。硬件项嵌入式 Linux 方案安卓方案差额主控A7 双核 1.2GHz约 50 元RK3566 四核 A55约 120 元70 元内存256MB DDR3约 20 元2GB DDR4约 80 元60 元存储8GB eMMC约 25 元16GB eMMC约 40 元15 元电源/PCB相对简单相对复杂多路供电10 元合计约 95 元约 250 元155 元单台 BOM 差 150 元左右年出货 1 万台就是 150 万的差额这个数字在老板眼里是能看得见的。但这就是全部的真相吗显然不是。安卓方案的硬件成本还有一个隐性因素内存和存储的价格波动。前两年内存价格暴涨安卓屏因为内存用量大成本波动幅度远高于嵌入式 Linux 屏。做产品报价的时候如果只是按当时的价格估算后面遇到元器件涨价安卓方案的利润会被迅速吃穿。不过也要客观说一句嵌入式 Linux 的物料优势正在被蚕食。近两年不少安卓屏方案在往低端走出现了 1GB 8GB 的“轻量安卓”方案整机物料成本甚至能做到和嵌入式 Linux 方案只差 80 元左右。如果对性能要求不高、应用定制不深这种方案在成本上的竞争力越来越强。4.2 研发成本安卓屏开发快但快在哪里要想清楚研发成本是两类方案差距最大、也最容易被低估的部分。嵌入式 Linux 屏的研发成本分布是“前期高、后期低”。前期你要处理 bootloader 的定制、内核的裁剪、驱动移植、文件系统构建、UI 框架的选型和适配这里面每一项都是专业技能都需要有人花时间去做。一个熟练的嵌入式 Linux 工程师从拿到开发板到跑起一个简单的 UI至少需要两到三周如果要支持触摸、网络、音频、串口、RTC 这些基础功能再把稳定性磨到量产级别两个月是合理的预期。安卓屏的研发成本分布是“前期低、中期高”。因为系统框架已经帮你把显示、输入、网络、存储这些都抽象好了应用层开发的门槛大幅降低。一个熟悉安卓开发的工程师拿到开发板后当天就能跑一个 Hello World一周内就能做出一个像样的交互界面。界面设计这块差距尤其大——嵌入式 Linux 下做一个好看的动画效果可能要写上千行代码调 GPU 渲染安卓下用一个开源库几十行代码就能实现。但安卓的“前期低”是有代价的。到了中后期你会遇到各种系统层面的问题驱动适配、兼容性测试、系统裁剪、安全加固、开机优化每一项都涉及系统级技术普通应用开发工程师不一定能搞定。项目走到这一步通常需要再引入一个懂系统定制的工程师而这个角色的人工成本比应用工程师高出一截。我在实际项目里观察到的规律是如果交互复杂度一般嵌入式 Linux 和安卓的研发总成本其实是接近的并没有哪一方有压倒性优势安卓省下的是界面开发的时间嵌入式 Linux 省下的是系统调试的时间关键看你的团队更擅长哪一端。4.3 维护、认证和量产的隐藏成本除了研发成本还有几项容易在选型时被忽略的成本。认证测试方面如果产品要进欧美市场需要过 CE、FCC 认证这里安卓和嵌入式 Linux 没有本质差异因为认证测的是硬件不是操作系统。但如果你的产品涉及支付、医疗等监管场景安卓的证书管理、安全补丁、合规审计会比 Linux 更复杂合规成本自然更高。量产维护方面嵌入式 Linux 方案的优势在于“软件不会变”产品量产之后几乎不需要再做软件维护烧录完镜像就完事。安卓方案则要考虑 GMSGoogle Mobile Services授权费如果走海外市场且需要、系统安全补丁的长期更新、Android 大版本升级时的适配测试。这些维护成本在产品生命周期超过三年的项目里会明显放大。供应链成本也是一个容易被忽略的角度。嵌入式 Linux 的主控平台很多都有 7 到 10 年的供货周期承诺而安卓平台因为消费类市场迭代快主控的停产风险更高。两年前我帮客户选了一颗主控芯片结果年底原厂发通知说三年后停产整个产品方案被迫重新评估还好当时选的是 Linux 平台软件迁移成本可控。如果选的是安卓方案平台更换可能意味着整个系统框架重来一遍那个成本和风险就大了。5. 工程化落地开发调试、量产烧录和运维的实战差异选型不能只看纸面参数工程化落地是否顺畅往往决定了一个方案能否按时交付。两类屏在实际开发、量产、运维环节的体验差异比很多人想象中要大得多。这里把几个关键环节的实战经验摊开来讲。5.1 开发工具链和调试手段的差异嵌入式 Linux 的开发工具链相对传统但胜在稳定可控。调试手段包括串口终端看内核日志JTAG 调试器做硬件断点gdb 挂载调试用户进程。整个工具链成熟且透明问题定位基本都能深入到寄存器层面。系统日志是排查问题的利器内核的 log_buf 和用户空间的 syslog 配合使用基本能还原系统运行轨迹。如果你用的是 buildroot可以开启内核的 dynamic debug在运行时动态控制某个模块的打印级别如果用的是 Yocto还能用 systemtap 做运行时追踪。这些工具用熟了大部分问题都能在半天内定位。安卓的开发工具链相对现代Android Studio、Logcat、Profiler 这套组合拳打下来应用层的开发和调试体验确实更好。拉到问题现场直接开 Android Studio 连设备看 logcat 就能看到异常堆栈这个效率是嵌入式 Linux 比不了的。但一旦问题下沉到系统层比如驱动异常、休眠唤醒失败、功耗异常安卓的调试复杂度就会明显上升需要在 ADB shell 里手动操作有时甚至需要重新编译完整的系统镜像才能加一行打印。这中间的效率损失实际做过系统定制的工程师都懂。5.2 烧录、量产和软件更新的操作体验量产阶段嵌入式 Linux 的流程相对简洁。整个系统镜像就是一个文件开发阶段调试好了之后只需要通过工厂的烧录工具把镜像烧进 eMMC 或者 SPI NOR Flash然后做一次自检就完成了。镜像体积小烧录速度快如果产品线多还可以用工厂模式做动态配置让同一套镜像适配不同型号的硬件。安卓的量产流程要繁琐一些。除了烧录系统镜像通常还要考虑首次开机初始化这个步骤在低端安卓平台上可能耗时两三分钟、数据分区的格式化、系统应用的首装优化AOT 编译、唯一标识的写入等。如果产品需要预装硬件密钥或证书还要考虑安全烧录的流程设计。安卓的镜像体积大量产时需要更高规格的烧录工具和更长的烧录等待时间。在产线节拍按秒来算的企业里这会直接换算成生产成本。软件更新方面嵌入式 Linux 的远程 OTA 方案相对轻量A/B 双分区切换、断点续传、签名校验基本能满足 99% 的工业场景需求。安卓的 OTA 工程复杂度高得多系统分区的合并、差分包的制作、升级失败的恢复、兼容性验证每一项都值得单独一个专题来讲。5.3 远程运维和设备管理的差异设备卖出去之后远程运维能力决定了售后成本的高低。两类系统的设备管理能力可以说各走极端。嵌入式 Linux 的远程管理方案目前主要靠 SSH 和自定义的云平台协议。SSH 可以给到完整的系统控制权调试问题很方便但安全性要求高要对密钥管理、访问控制做好设计。自定义云平台协议则是把状态上报、参数下发、日志上传这些功能封装成 JSON 或 protobuf 消息通过 MQTT 等轻量协议上报到服务器整体数据流量小、响应快、运行稳定。安卓的远程管理不仅限于系统级还能利用系统自身的机制——比如“开发者选项里的 USB 调试”可以远程开启配合 ADB over WiFi 就能远程操作也可以集成第三方的设备管理 SDK这类 SDK 通常封装了状态采集、远程截屏、远程控制、应用安装等功能底层调用的就是 Andorid 系统接口开发量不大。这里要特别提醒一点安卓的远程管理能力越强被攻击的风险就越大。ADB over WiFi 如果在产品中默认开启一旦设备被恶意扫描到攻击者可以直接操作整个系统。工业场景的物联网设备往往处于相对封闭的网络风险可能还不明显但凡是设备能触达公网就必须把安全加固作为安卓屏的必备项来对待。嵌入式 Linux 因为系统封闭性强攻击面小得多但也不能完全不做安全设计。6. 选型决策建议从三个维度判断你该选谁说了这么多最后落到决策。我不打算给“画一张流程图然后让你跟着走”的那种教条式建议那玩意儿看着专业实际操作时根本没法用。我直接给出几个判断项目和场景的维度你按自己的情况对照就行。6.1 交互复杂度是第一个分水岭先看你的产品需要多复杂的交互界面。如果只是显示状态、几个按钮、几个菜单、参数设置这样的层级交互逻辑固定且不会频繁变化嵌入式 Linux 可以毫不费力地胜任没有必要为用不上的功能买单。反过来如果你的产品需要多页面并行、复杂的动画过渡、网页内嵌展示、第三方应用支持安卓基本上是不可替代的别在嵌入式 Linux 上死磕那会让团队陷入无休止的自研泥潭。有一个很实用的判断方法把你的 UI 需求列出来逐个打勾——是否需要跑第三方 APK、是否需要支持浏览器内核、是否需要频繁热更新界面、是否需要同时展示多个视频流、是否需要和手机 APP 做深度联动。只要有一个需求是“需要”安卓就应该是最优先考虑的方向。6.2 稳定性能否容忍偶发异常是第二个分水岭再评估你的产品对稳定性的容忍度。需要 7x24 小时不间断运行的工业现场比如产线设备、医疗仪器、能源管控嵌入式 Linux 的“少即是多”哲学明显更契合商业场景的设备比如自助查询机、广告发布屏对偶发的软件重启没那么敏感自动重启恢复即可安卓的易用性优势就能凸显出来。还需要评估异常恢复的速度。嵌入式 Linux 的看门狗复位从上电到恢复正常工作只需要 2 到 3 秒安卓如果发生系统级重启恢复到可用状态可能需要 30 秒以上。在交通、医疗这类对实时性要求高的场景里这种差异是不可接受的。6.3 团队能力和供应链是第三个分水岭最后看你的团队在哪类技术上有积累。团队是做 APP 出身的安卓的入门门槛更低上手更快团队是搞单片机或者传统的工控开发的嵌入式 Linux 的技术栈跨度更小。不要逆着团队的能力去选型强行让 GTK/QT 背景的团队去啃安卓系统定制或者让 APP 出身的团队去补 Linux 内核和驱动开发那才是真的自找苦吃。供应链的考量也不能丢。你的产品预期生命周期有多长如果打算卖三到五年甚至更久要确认主控平台的长期供货承诺如果产品迭代快半年一换那安卓平台的迭代速度反而是优势。6.4 这次项目里我是怎么选的这次做的工业设备显示交互项目最后定了嵌入式 Linux。理由很简单交互就是启动画面、参数监控、报警提示、设置菜单逻辑非常固定产品要放户外环境七成时间没人碰但一旦有人在旁边操作就必须立刻响应。客户明确要求从上电到出画面不超过 3 秒全年无休运行且不能出现无故重启。这个需求画像安卓方案要满足需要付出极高的定制成本嵌入式 Linux 则是水到渠成的事。实际跑下来开机时间 2.1 秒连续运行 120 天零重启单台物料成本比用安卓方案省了 140 元左右。做完这个项目我个人的体会是选型之争最后不是技术之争而是需求还原度和工程执行力的之争。把需求换成一句话——用户在意的是屏幕亮得快还是界面跟手还是设备永不死机——选型的天平自然就会倾斜。嵌入式 Linux 和安卓没有绝对的优劣只有适配度的差异。找个周末把需求逐条列出来对照上面的几个维度过一遍答案其实很容易浮现出来。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进