OTA整体框架里会涉及以下代码,从gaia到gecko都有,而且由于历史原因,复用了desktop browser的一些模块,还有一些冗余代码,分析时走了不少弯路。
1. Gaia部分
(a) gaia/apps/settings/js/panels/about/update_check.js
这个Settings中OTA功能的入口,通过AMD(Asynchronous Module Definition)规范,定义了一个模块UpdateCheck。
(b) gaia/apps/system/js/update_manager.js
这是SystemApp导出的全局对象:window.UpdateManager,它是Gaia层与Gecko层通信的桥梁,通过mozContentEvent&mozChromeEvent进行通信。
(c) gaia/apps/system/js/updatable.js
这是一个辅助类,updatable.js的开头注释中很好的描述了它的的职责:它代表了一个system update(SystemUpdatable)或者一个application update(AppUpdatable,暂时不分析),XXXUpdatable与window.UpdateManager通信,处理download等相关动作。
2. Gecko部分
Gecko中的代码比较分散,大致在3个位置,分别是:
时间: 2024-10-16 08:42:23