用户在使用Widget集成时,使用plus.runtime.install API进行5+应用升级时会发现,方法回调安装成功,但是应用重启后加载的依然是老版本的Web应用。
这是因为会用Widget方式集成时调用 SDK.startWebApp 方法创建IApp对象时,需要传入WebApp的保存路径作为参数
![](http://img-cdn-tc.dcloud.net.cn/uploads/article/20161012/bdf9167342c3c9004f57856a7cbf4871.png)
一般情况下WebApp的资源是放在原生工程的assets/apps目录下,在生成apk安装包后这个目录下的文件是不能修改。 5+SDK在wgt/wgtu升级后会将资源释放到SD卡下,路径为 SD卡/android/data/[apk包名]/apps/[WebApp的ID]/www,所以在资源升级后调用SDK.startWebApp方法时传入的参数需要进行调整。
我们知道了问题的原因,下面我们来解决问题。
我们可以通过判断SD卡/android/data/[apk包名]/apps/[WebApp的ID]/www目录下是否有应用的mainfest.json文件存在的方式判断应用是否升级,如果该文件存在则设置该路径为应用启动路径,否则使用apk下的assets目录为启动路径
apk在卸载时SD卡/Android/data/[apk包名] 目录下的内容有可能不会被系统删除,为了保证 安装/升级 apk后,不会使用到以前遗留的WebApp资源,建议在WebApp启动前写文件保存当前apk的版本号,每次启动时判断保存的版本号与当前apk的版本号是否一致,如果不一致需要则删除 SD卡/android/data/[apk包名]/apps/[WebApp的ID]/www 目录下的全部内容,这样可以保证使用正确的WebApp资源,