现在已经有新项目使用flutter,和Weex一样也满足只需要开发一次,多端使用。Weex前端需要适配的UI较麻烦,本身也不是特别成熟,有点半成品,flutter可能是更好的选择。flutter支持使用android sdk,比如阿里云视频播放器SDK

应用发布之前,先执行前端的一个命令把js文件、图片保存到src/main/assets目录下。相当于保存一份前端用到的文件到android固定目录下。

基本的逻辑是如果是本地文件前缀,比如file://,就直接加载,因为之前已经把文件保存到本地,这块也可以用于本地测试。如果是远程文件前缀,比如https://,发送一个head请求,HTTP_NOT_MODIFIED标识,检查js文件是否更新过。更新过,就需要开启子线程下载js文件到本地,handler通知UI线程,没有更新过就使用上次下载的本地js文件。远程js文件放在阿里云OSS上。

以上是一种技术复杂度较低的热更新方案。每次都会有head请求检查js文件是否已经更新,当然也可以设定一个时间,比如该url距离上次检查两小时,相对的热更新就不会这么及时,具体要看需求。