【问题标题】:Meteor heroku Error parsing asset manifestMeteor heroku 解析资产清单时出错
【发布时间】:2018-02-09 06:07:36
【问题描述】:

我检查了thisthis,以及所有可能的文章。 甚至检查了Meteor Guide 并因为这个问题很快就发疯了!

问题: 问题是一旦推送到下面提到的 ROOT_URLHot Code Push (HCP) 就可以在设备上工作。

环境:

Mac macOS Sierra
Meteor  : 1.5.1
Router  : iron:router@1.1.2
Hosting : Heroku
Deploy Source: GitHub
Cordova : 7.0.1
Android tools target: 23
Buildpack: https://github.com/AdmitHub/meteor-buildpack-horse.git

Buildpack Options:
  BUILDPACK_PRELAUNCH_METEOR = 0
  ROOT_URL: https://grocer-eg.herokuapp.com/

运行命令:

meteor run android-device -s settings.json --mobile-server https://grocer-eg.herokuapp.com

meteor build --mobile-settings settings.json --server https://grocer-eg.herokuapp.com --debug --directory ../my-output-directory/

日志:

App running at: http://localhost:3000/     
=> Started app on Android Device.             
I20170830-19:43:30.364(3)? int logctl_get(): open '/dev/hwlog_switch' fail -1, 13. Permission denied
I20170830-19:43:30.518(3)? 
I20170830-19:43:30.521(3)? Note: log switch off, only log_main and log_events will have logs!
I20170830-19:43:30.522(3)? 08-30 19:43:09.277 14167 14167 I CordovaLog: Changing log level to DEBUG(3)
I20170830-19:43:30.522(3)? 08-30 19:43:09.379 14167 14167 I chromium: [INFO:library_loader_hooks.cc(144)] Chromium logging enabled: level = 0, default verbosity = 0
I20170830-19:43:30.523(3)? 08-30 19:43:10.121 14167 14167 I MeteorWebApp: Serving asset bundle with version: d723bae98470d4b496c7c54898abf69b06ce144b
I20170830-19:43:30.524(3)? 08-30 19:43:10.498 14167 14263 E chromium: [ERROR:BudgetService.cpp(165)] Unable to connect to the Mojo BudgetService.
I20170830-19:43:30.524(3)? 08-30 19:43:11.490 14320 14380 I chromium: [INFO:library_loader_hooks.cc(144)] Chromium logging enabled: level = 0, default verbosity = 0
I20170830-19:43:30.524(3)? 08-30 19:43:12.253 14167 14167 I chromium: [INFO:CONSOLE(9676)] "Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.", source: http://localhost:12128/packages/jquery.js?hash=e5fc9cebb2e37c48ddfaf76e0ab0b77cb6ce6e52 (9676)
I20170830-19:43:30.525(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp: Download failure
I20170830-19:43:30.525(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp: com.meteor.webapp.WebAppException: Error parsing asset manifest
I20170830-19:43:30.525(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   at com.meteor.webapp.AssetManifest.<init>(AssetManifest.java:80)
I20170830-19:43:30.525(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   at com.meteor.webapp.AssetBundleManager$1.onResponse(AssetBundleManager.java:112)
I20170830-19:43:30.526(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   at okhttp3.RealCall$AsyncCall.execute(RealCall.java:133)
I20170830-19:43:30.526(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
I20170830-19:43:30.526(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
I20170830-19:43:30.526(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
I20170830-19:43:30.527(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   at java.lang.Thread.run(Thread.java:776)
I20170830-19:43:30.527(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp: Caused by: org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
I20170830-19:43:30.527(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   at org.json.JSON.typeMismatch(JSON.java:111)
I20170830-19:43:30.528(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   at org.json.JSONObject.<init>(JSONObject.java:160)
I20170830-19:43:30.528(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   at org.json.JSONObject.<init>(JSONObject.java:173)
I20170830-19:43:30.528(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   at com.meteor.webapp.AssetManifest.<init>(AssetManifest.java:39)
I20170830-19:43:30.528(3)? 08-30 19:43:15.121 14167 14505 W MeteorWebApp:   ... 6 more

更新说明:

http://localhost:3000/__cordova/manifest.json 成功返回一个巨大的json文件,但是https://grocer-eg.herokuapp.com/__cordova/manifest.json 被路由为未找到的模板!

在不理解 90% 的文章的情况下,我一直在搜索,并遵循其中的每一个建议。

【问题讨论】:

  • 这是在您针对产品服务器运行 APK 时,还是处于开发模式?
  • 我在本地机器上运行meteor run 命令,但指向我的生产服务器
  • 听起来不太好。来自应用程序的任何请求都将发送到产品服务器,但这不是应用程序提供服务的地方,因此您有 2 个事实来源,并且 HCP 将从产品服务器发生,我认为这不是您想要
  • 如何在不引用本地主机的情况下构建/运行 apk?如果您有解决方案,欢迎分享
  • 开发时不需要提及移动服务器,只需使用meteor run android-device 构建 apk 以确保其正常工作有一个技巧 - 如果是这样,我可以分享你正在寻找

标签: cordova meteor heroku iron-router


【解决方案1】:

Meteor 构建会记住您在本地运行时的最后一次设置,这在技术上是一个错误,但由于有解决方法,因此从未得到解决。

为了构建一个 APK,你需要确保你的构建区域是新鲜的,这个脚本就是这样做的:

#!/bin/bash
#
# Script to generate android apk (pre-cursor)

# Remove previous build (ensures a clean build)
#
rm -rf .meteor/local/cordova-build

# Remove the app from the device (makes installation more reliable)
#
adb uninstall <%=COM_NAME%>

# Run meteor, which will build a debug apk and install it on the device
#
meteor --mobile-server <%=ROOT_URL%> run android-device

这是我用来为每个不同环境生成脚本的模板。

完成此操作后,您的构建区域现在已准备好目标环境的 URL,并且设备上的 APK 已准备好用于该环境。现在使用相同的 URL 进行构建:

meteor build --server <%=ROOT_URL%>

这有点令人费解。我最终编写了一堆脚本,让我可以轻松管理多个环境,一次用于每台开发机器、登台、测试和生产。

您可以手动完成所有这些操作,但很容易出错。一个错误,你必须重新开始,无论如何构建和安装周期需要一点时间。如果您愿意,我可以与您分享脚本。

【讨论】:

  • 我尝试删除 cordova-build 文件夹,从手机上卸载了该应用程序,然后运行 ​​meteor run android-device --mobile-server ...,但我仍然遇到同样的问题。我相信问题出在 Heroku 方面!因为我找不到https://grocer-eg.herokuapp.com/__cordova/manifest.json的路线
【解决方案2】:

显然,除了使用我正在使用的 buildpack 之外,我没有做错任何事情。

构建包的问题在于它在运行流星herehere之前删除了android平台

所以我只是 forked 它并注释掉了这些行,它按预期工作。

现在我有 HCP 工作了 :D

【讨论】:

    猜你喜欢
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2019-01-31
    • 1970-01-01
    相关资源
    最近更新 更多