Efiwe让低端安卓手机离线运行多种编程环境
Efiwe的开发源于一项编程培训经历:80名报名学生中,最终只有6人完成课程,主要原因并非主动退学,而是网络连接无法支撑完整直播课程。该平台因此试图打破编程教育对笔记本电脑、宽带、英语能力和付费订阅的默认要求。学习者只需在手机浏览器完成初始设置,之后便可离线学习并在本地执行代码。目前,Efiwe已被160个国家的2.2万多名学习者使用,并在尼日利亚拉各斯州、奥贡州和印度北阿坎德邦学校开展试点。
平台最终选择渐进式Web应用(PWA),而不是原生Android应用。原生应用即使不含课程内容,安装APK也可能消耗数十MB流量;PWA可以打开即用,并在后台逐步缓存。Service Worker还能让更新在用户下次访问时生效,避免因用户延迟更新而长期运行旧代码。相比套壳WebView,PWA省去了首次下载APK的门槛,但代价是必须直接面对浏览器存储配额等限制。
为避免不稳定网络造成频繁往返,平台把代码执行放到设备本地。SQL运行时采用编译为WebAssembly的sql.js,Python使用同样基于WebAssembly的Pyodide,同时支持JavaScript和HTML。由于这些运行时体积较大、初始化较慢,系统不会在主线程启动,也不会在用户真正需要前加载,而是在选择课程后通过Worker按需初始化;挑战页面首次渲染不等待运行时完成,初始化还设置了45秒超时,并优先从缓存加载模块,以支持长时间离线后的再次使用。
Worker会防止重复初始化,并将学生代码产生的异常视为正常学习数据,而不是导致执行链路终止的系统故障。SQL题目也不直接比较输出字符串,而是根据列名、行内容及是否要求顺序进行结构化判定。列顺序、结果顺序或格式在题目允许时可以不同,判定结果还会保留“列正确但筛选条件错误”等原因,为后续反馈提供依据。
平台包含246种语言的内容,翻译后的题目会缓存到设备,使使用约鲁巴语或印地语的学习者无需重复下载。早期方案采用localStorage,但其容量通常约为每个源5MB,且会因浏览器和平台而异;一门包含数百道题的课程仅缓存少量语言就可能超限,写入时触发QuotaExceededError。因此,面向弱网和低端设备的产品,真正困难的不只是模型能力,还包括存储效率、配额管理、冷启动以及各种失败路径的容错设计。
本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。
阅读原文