远程设置引发的Firefox Android搜索引擎缺失问题排查与恢复
背景
前几天将Firefox Android更新到140.0版本后,发现内置的搜索引擎全部缺失,仅能搜索「书签」、「标签页」、「历史」内容。如下图所示:
分析
根据Mozilla的文档,Firefox Android的搜索引擎由「search-config-v2」控制,相关配置通过远程设置(Remote Settings)获取,其会根据用户的地理位置等信息设置搜索引擎。在实体机上,相关文件存储在/data/data/org.mozilla.firefox/app_remote-settings
目录下,以SQLite数据库的形式存在。
首先,我推测相关配置可能损坏。故我安装了Firefox Nightly版本,发现其搜索引擎正常后,将app_remote-settings
目录覆盖到稳定版的Firefox中,但重启Firefox后,问题依旧存在。说明这种方法行不通。
但我发现,配置文件的修改日期已然发生变化。因此,我推测Firefox在启动时会从远程获取配置,而远程设置的配置文件出现了问题。打开「Secret Settings」后,发现「Use Remote Settings Production server」选项被禁用,因此其会从测试服务器(staging)获取配置。而测试服务器的配置文件可能与稳定版不兼容,或是存在问题。故我启用了该选项,随后重启Firefox,发现搜索引擎恢复正常。
后来我对比了138.0版本的「Secret Settings」,注意到140.0版本多出了「Enable Remote Search Configuration」选项,且为默认启用(当然不排除灰度推送的可能)。先前未出现问题,可能是因为先前版本中始终使用本地配置文件,与远程配置无关。
解决方案
- 打开设置,找到Secret Settings菜单(若未显示,则需打开「关于Firefox」页面,点击版本号5次,以打开调试菜单)。
- 在Secret Settings中,启用「Use Remote Settings Production server」选项。(也可关闭「Enable Remote Search Configuration」选项,但这会导致Firefox回退到包内旧配置,可能会错过新版搜索引擎调整)
- 重启Firefox,搜索引擎恢复正常。
后记
有用户在GitHub上指出,staging服务器的配置文件不完整;亦有用户在Bugzilla上反馈,关联图标也可能存在问题。因此若是正常使用,建议还是不要选择测试服务器的配置文件。后来回忆起,自己似乎修改过配置文件获取版本的选项,但忘记复原。所以在测试某些选项时,如果不明白选项的具体含义,或是没有发现选项的效果,我认为还是使用默认设置比较合适,可以防止出现意外问题。