【问题标题】:IBM Worklight 5.0.5.1 - Direct Update fails in AndroidIBM Worklight 5.0.5.1 - Android 中的直接更新失败
【发布时间】:2013-10-29 17:13:04
【问题描述】:

在我们包含 iOS 和 Android 环境的项目中,
当直接更新发生时,我们的 Android 应用程序突然出现故障。 iOS 仍然可以正常工作。

有没有办法查看直接更新函数尝试使用哪个地址来更新自身?
现在我们得到的是:

E/WLDroidGap(23185):下载应用程序更新文件失败。

更新:: 环境是 https --> 防火墙 --> netscaler --> worklight 服务器

我确实让网络人员在 netscaler 中创建了一个 http 端点,这很有效。 所以 https 的某些东西给直接更新带来了问题。

我们注意到 init 调用返回了响应。

success: /*-secure-
    D/AppName  (  682): {"gadgetProps":{"directUpdate":{"checksum":328818244,"updateSize":1346819,"availableSkins":["default"]},"ENVIRONMENT":"android"},"userPrefs":{},"WL-Authentication-Success":{"wl_deviceNoProvisioningRealm":{"userId":"device","attributes":{"mobileClientData":"com.worklight.core.auth.impl.MobileClientData@3ff51267"},"isUserAuthenticated":1,"displayName":"device"},"wl_antiXSRFRealm":{"userId":"antiXSRF","attributes":{"savedInstanceId":"l057614d2gsf26emf8lr6kndn1"},"isUserAuthenticated":1,"displayName":"antiXSRF"}},"userInfo":{"wl_deviceNoProvisioningRealm":{"userId":"device","attributes":{"mobileClientData":"com.worklight.core.auth.impl.MobileClientData@3ff51267"},"isUserAuthenticated":1,"displayName":"device"},"wl_anonymousUserRealm":{"userId":"0738882f-8b37-4609-acd5-dc2333438692","attributes":{},"isUserAuthenticated":1,"displayName":"0738882f-8b37-4609-acd5-dc2333438692"},"WorklightConsole":{"userId":null,"attributes":{},"isUserAuthenticated":0,"displayName":null},"wl_deviceAutoProvisioningRealm":{"userId":null,"attributes":{},"isUserAuthenticated":0,"displayName":null},"wl_authenticityRealm":{"userId":null,"attributes":{},"isUserAuthenticated":0,"displayName":null},"wl_antiXSRFRealm":{"userId":"antiXSRF","attributes":{"savedInstanceId":"l057614d2gsf26emf8lr6kndn1"},"isUserAuthenticated":1,"displayName":"antiXSRF"},"wl_remoteDisableRealm":{"userId":"NullLoginModule","attributes":{},"isUserAuthenticated":1,"displayName":"NullLoginModule"},"SampleAppRealm":{"userId":null,"attributes":{},"isUserAuthenticated":0,"displayName":null},"myserver":{"userId":"0738882f-8b37-4609-acd5-dc2333438692","attributes":{},"isUserAuthenticated":1,"displayName":"0738882f-8b37-4609-acd5-dc2333438692"}}}*/

但是直接更新调用失败::

D/        (  682): HostConnection::get() New Host Connection established 0x2a632910, tid 695
D/dalvikvm(  682): GC_CONCURRENT freed 313K, 5% free 8477K/8903K, paused 18ms+35ms, total 133ms
E/WLDroidGap(  682): Failed downloading application update file.

它很难诊断,因为 IBM 似乎捕获了 IOException 并给出了一个预设消息

【问题讨论】:

    标签: android ibm-mobilefirst worklight-runtime


    【解决方案1】:

    我们的问题原来是服务器上的证书改变了,整个链没有导入服务器。因为它来自一个不受 android 信任的证书颁发机构,所以我们需要整个链(IOS 确实信任这个颁发机构,这就是它没有显示问题的原因)。

    初始化有效但更新无效的原因是:初始化是由 webview 完成的,如果 android manifest xml 已调试,则 web view 允许不受信任的证书。

    【讨论】:

      【解决方案2】:

      这是在生产还是在开发过程中?

      • 直接更新目标是硬编码的;它无法更改,它是应用程序连接到的服务器。
      • 清除应用缓存后会发生什么?
      • 设备中是否还有足够的存储空间?

      【讨论】:

      • 这是生产和测试,前面有负载均衡器的两个环境。负载均衡器管理员在听我说之前想知道路径是什么。由于 IOS 和 Android 都使用相同的上下文根,他们认为这与他们无关。这发生在所有安卓设备上。我还创建了新的二进制文件并安装了它们,仍然有问题。
      • 应用程序连接到 Worklight Server 后,您可以在响应中(在 LogCat 中)看到一个校验和值;如果此校验和值(存储在 Worklight Server 数据库中)与应用程序的 Web 资源校验和(存储在设备中)不同,则将进行直接更新。 Direct Update URL 是静态的,它是 Worklight Server 地址。
      • 在您的测试服务器中,如果您删除 Android 环境(通过 Worklight Console,环境名称旁边有一个“x”)并重新部署 youApp-android-1.0.wlapp,会发生什么情况?如果可能,添加实际的 LogCat。
      • 了解您的服务器拓扑也很有用 - 有多少服务器,多少数据库。请使用此信息编辑问题。
      • 上面更新了,我们发现如果我们使用http而不是https直接更新是可以的。不知道为什么现在会出现问题,因为 env 已经运行了一段时间
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 2013-12-01
      相关资源
      最近更新 更多