首页 > 解决方案 > Meteor HCP 不更新 Android 应用程序

问题描述

我在流星 1.8.1 上。我有一个 android 应用程序,它有一个充满内容的公共文件夹。服务器正在运行服务器构建。我更改了公用文件夹中的内容,并希望 HCP 在重新加载应用程序时使用新内容更新应用程序。但我可以看到更新仅在我从浏览器浏览服务器 URL 时可见。应用程序永远不会更新。卸载,安装应用程序也无济于事。

查看日志,这三行似乎表明检测到了新版本。但未显示新版本:

08-19 16:07:16.775 24331 24331 W MeteorWebApp: Loading asset bundle from directory file:///android_asset/www/application
08-19 16:07:16.814 24331 24331 D MeteorWebApp: Initial bundle loaded dcbda88356768b5995eb01252953c33e8792f5ab
08-19 16:07:16.815 24331 24331 D MeteorWebApp: Detected new bundled version, removing versions directory if it exists

我可以看到一些看起来像是 Cordova 捆绑包问题的日志条目:

08-19 15:47:36.164 21426 21482 W MeteorWebApp: Asset /__cordova/a8716fc383e1d6798d1d2f74c7a1efa133561b90.css found in bundle d4ab999152177e0d1f69c80d5554edcf22bac01a:file:///android_asset/www/application
08-19 15:47:36.168 21426 21482 W MeteorWebApp: Asset /cordova.js not found in bundle d4ab999152177e0d1f69c80d5554edcf22bac01a:file:///android_asset/www/application, no parent bundle
08-19 15:47:36.172 21426 21482 W MeteorWebApp: Asset /__cordova/93384f261c67033d275f67c41bf561bee6406478.js found in bundle d4ab999152177e0d1f69c80d5554edcf22bac01a:file:///android_asset/www/application
08-19 15:47:36.245 21426 21482 W MeteorWebApp: Asset /cordova_plugins.js not found in bundle d4ab999152177e0d1f69c80d5554edcf22bac01a:file:///android_asset/www/application, no parent bundle
08-19 15:47:36.256 21426 21482 W MeteorWebApp: Asset /plugins/cordova-plugin-meteor-webapp/www/webapp_local_server.js not found in bundle d4ab999152177e0d1f69c80d5554edcf22bac01a:file:///android_asset/www/application, no parent bundle

我试过手动调用 WebAppLocalServer.checkForUpdates(); 在 Meteor.startup 上,但我可以看到这个异常:

08-19 16:07:19.368 24331 24445 W MeteorWebApp: Download failure
08-19 16:07:19.368 24331 24445 W MeteorWebApp: com.meteor.webapp.WebAppException: Error parsing asset manifest
08-19 16:07:19.368 24331 24445 W MeteorWebApp:  at com.meteor.webapp.AssetManifest.<init>(AssetManifest.java:80)
08-19 16:07:19.368 24331 24445 W MeteorWebApp:  at com.meteor.webapp.AssetBundleManager$1.onResponse(AssetBundleManager.java:112)
08-19 16:07:19.368 24331 24445 W MeteorWebApp:  at okhttp3.RealCall$AsyncCall.execute(RealCall.java:153)
08-19 16:07:19.368 24331 24445 W MeteorWebApp:  at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
08-19 16:07:19.368 24331 24445 W MeteorWebApp:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
08-19 16:07:19.368 24331 24445 W MeteorWebApp:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
08-19 16:07:19.368 24331 24445 W MeteorWebApp:  at java.lang.Thread.run(Thread.java:764)
08-19 16:07:19.368 24331 24445 W MeteorWebApp: Caused by: org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject

我已经确认服务器正在运行并且应用程序能够成功地调用服务器。应用程序中有一些插件,如 OneSignal、ostrio:logger 能够成功与服务器通信。只有 HCP 不工作。

更新

添加 cordova 平台后,会生成 __cordova/manifest.json 端点。但是,应用程序和服务器是使用不同的应用程序 ID 构建的。因此,HCP 无法工作并抛出 App ID 不匹配异常。我可以通过设置 APP_ID 环境变量来修复服务器上的 App ID。但是找不到在移动版本上设置 App ID 的方法。准备一个 mobile-config.js 并将其作为 --mobile-settings 参数传递给流星构建命令也不起作用。它在科尔多瓦构建步骤中失败,说文件无效。该文件绝对有效,因为它一直有效到 Meteor 版本 1.4。但升级到 Meteor 1.8.1 后,它开始失败。

标签: cordovameteor

解决方案


推荐阅读