android app热更新方案探讨(三)

  上期我们讨论了一些关于cordova的方面的知识,详细信息,还是以官网为准。这期,我们将继续探讨cordova方面的知识。至于如何创建cordova应用,开发文档上有详细的讲解,我们在次不讨论这个问题,而是把主要精力放在热更新这方面。

  创建的cordova项目,一般会把html等资源文件放在assets下,WebView每次都是直接加载assets下色资源文件。这种方式是cli方式创建的项目的默认加载方式。这种方式的优点是:加载速度快,省流量。但缺点也同样明显:无法实时更新最新的资源文件。同时,如果是通过ajax方式去请求数据,就可能会存在跨域的问题。另外一种方式是把所有的资源文件,放在服务器上,WebView每次去加载服务器上的资源,这种方式的优点是:能够及时更新最新的资源文件;但缺点是:每次都需要去加载网络资源,耗费大量流量,加载速度较慢,特别是网络环境不够理想的时候;如果使用缓存,又会有其他问题(这里可能是我没处理好,希望有经验的朋友不吝赐教)。放在app内,导致无法及时更新资源文件,放在服务器端有会导致响应不及时等问题,那么,能不能把资源文件放在手机内,解决掉加载速度慢的问题,又能及时更新最新的资源文件,解决掉热更新的问题呢?放在assets目录下,没办法下载最新的资源文件,那放在其他的位置呢?是不是就可以解决了呢?比如:SD卡下。理论上来讲,这个是可行的。实际测试上来看,加载SD卡上的资源文件,也是可行的。这个方案应该是可行的,当然,不能考虑其他的影响,否则这个方案也是存在一些问题的。至于可能存在哪些问题,欢迎朋友们交流。今天,我暂且用这种方案来做,至于具体方案,我会在下期里详细介绍出来的。这期先简单的探讨一下这种方案的实现过程。

  app出厂的时候,我们可以把初始化的资源文件放在assets目录下,app启动的时候,把这些资源文件copy到SD卡下,WebView加载SD卡下的这些资源文件。同时,我们还需要加一个更新的接口,启动app的时候,就去访问该接口,看看是否有资源文件需要更新,如果有,则去下载最新的资源文件,同时替换掉旧的资源文件,这就解决掉了热更新的问题。当然,这只是一种探讨,至于能不能实现,还需要实际项目的检验。如果哪位朋友已经应用到了实际的项目中,欢迎分享,交流经验。

  这期只探讨一种实现的可能,至于存在的问题(我目前所知道的),我们将在下期中去详细介绍出来的。技术有限,欢迎朋友们交流分享自己的经验。谢谢大家!

你可能感兴趣的:(android)