【问题标题】:How to fix MeteorWebApp error: "Skipping downloading new version because the Cordova platform version or plugin versions have changed ..."?如何修复 MeteorWebApp 错误:“跳过下载新版本,因为 Cordova 平台版本或插件版本已更改......”?
【发布时间】:2016-09-22 03:29:36
【问题描述】:

当我在我的 android 设备上运行我的应用程序时出现错误:

meteor run android-device --settings settings.json --mobile-server=myip:port

我已经使用 MUP (Meteor up) 在我的 VPS 中部署了我的应用程序。我的应用程序 设备似乎工作良好并且能够与我的 VPS 通信,但我 有这个错误:

E/MeteorWebApp(30703):下载失败

E/MeteorWebApp(30703):com.meteor.webapp.WebAppException: 跳过 下载新版本因为 Cordova 平台版本或插件 版本已更改并且可能不兼容 I20160524

E/MeteorWebApp(30703):在 com.meteor.webapp.WebAppLocalServer.shouldDownloadBundleForManifest(WebAppLocalServer.java:367)

E/MeteorWebApp(30703):在 com.meteor.webapp.AssetBundleManager$1.onResponse(AssetBundleManager.java:131)

......

当我使用 --verbose 运行时,我有:

D/MeteorWebApp(4032):检测到新的捆绑版本,删除 版本目录(如果存在)

我的流星项目使用:

  • 流星 1.3.3-beta.0

  • cordova-android@5.1.1

  • cordova:cordova-plugin-device v1.1.2

【问题讨论】:

  • 您手机上的应用是否使用与您的 VPS 上相同的 Meteor 版本和 Cordova 插件版本构建?

标签: java android cordova meteor


【解决方案1】:

为了记录,这个错误是intentional behaviour of Meteor

我们的想法是在 Cordova 版本(或 Cordova 插件版本之一)发生更改时阻止热代码推送,或者如果新的 Cordova 插件已添加到 Meteor 项目中。基本原理是防止新代码到达无法使用它的设备,因为它将缺少相关的 Cordova 插件/版本(记住那些 cannot be updated through Hot Code Push,但需要通过 App Store / Play Store 进行传统更新)。

无论如何,应该有一个选项可以强制 Meteor 继续进行热代码推送,但遗憾的是我找不到有关它的文档。我认为当这种情况发生时(新的 Cordova 插件),在构建期间控制台中会出现一条帮助消息。

【讨论】:

  • 我已经向我的客户承诺,Meteor 版本的移动应用程序将自动更新,我没有必要发布新的应用程序。唯一真正改变的是我的纯 HTML/CSS/JavaScript。并且这些版本已更改。当用户数据可能与我的新版本不兼容时,我会编写迁移代码。 Meteor 的平台无法做到这一点,这很可悲。我知道在 Meteor 使用的新版本 Cordova 中可能会出现与我使用的不兼容的新功能,但是如果出现故障,为什么不尝试备份/部署/回滚过程呢?
  • @IvanBorisenko 我不确定我是否理解您的评论?如果您有具体问题,请随时提出新问题或使用 Meteor 论坛。
  • 感谢您的建议。我已经在 Meteor GitHub 问题上添加了我的 cmets。似乎很多人都想要这个功能。而且我建议考虑安装/回滚机制支持而不是这种愚蠢的保护。无论如何,我不会为该功能写 PR,因为我在生产中不再使用 Meteor:我正在努力解决它的错误,而不是采用唯一一个有用的功能:零 conf ESLast 重建和热代码重新加载。现在它只在开发阶段有用,我建议我的所有同事都这样做。
  • 我不确定 Meteor 是否值得这样的负面评价,但他们确实倾向于宣传尚未稳定或广泛可用的功能。我的经验法则:不要告诉客户我自己没有测试过的任何事情。
  • 这种故意行为可以用来防止热代码推送吗?还有其他方法可以防止热代码推送吗?
【解决方案2】:

您是否尝试过重新启用 android 平台:

meteor remove-platform android
meteor add-platform android

它解决了我的问题:

I20160729-21:30:01.571(2)? 07-29 21:30:01.342 10346 11702 E MeteorWebApp: Download failure
I20160729-21:30:01.572(2)? 07-29 21:30:01.342 10346 11702 E MeteorWebApp: com.meteor.webapp.WebAppException: Skipping downloading new version because the Cordova platform version or plugin versions have changed and are potentially incompatible
I20160729-21:30:01.572(2)? 07-29 21:30:01.342 10346 11702 E MeteorWebApp:   at com.meteor.webapp.WebAppLocalServer.shouldDownloadBundleForManifest(WebAppLocalServer.java:367)

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    相关资源
    最近更新 更多