IBM Worklight 5.0.5.1 — сбой прямого обновления в Android

В нашем проекте, содержащем среды iOS и Android,
внезапно из ниоткуда происходит сбой наших приложений Android при прямом обновлении. iOS по-прежнему работает нормально.

Есть ли способ узнать, какой адрес пытается использовать функция прямого обновления для обновления самой себя?
Сейчас все, что мы получаем, это:

E/WLDroidGap(23185): сбой загрузки файла обновления приложения.

ОБНОВЛЕНИЕ:: Среда https --> брандмауэр --> netscaler --> сервер worklight.

У меня были сетевые люди, создавшие конечную точку http в netscaler, и это работает. Итак, что-то с 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 и выдает готовое сообщение.


person tik27    schedule 29.10.2013    source источник


Ответы (2)


Наша проблема оказалась в том, что сертификат на сервере изменился, и вся цепочка не импортировалась на сервер. Поскольку это был центр сертификации, которому андроид не доверял, нам нужна была вся цепочка (IOS действительно доверяла этому центру, поэтому проблема не отображалась).

Причина, по которой инициализация работает, но обновление не выполняется, заключается в следующем: инициализация выполняется веб-просмотром, если в манифесте Android xml включена отладка, веб-представление позволяет использовать ненадежные сертификаты.

person tik27    schedule 14.03.2014

Это в производстве или в процессе разработки?

  • Назначение прямого обновления жестко запрограммировано; его нельзя изменить, и это сервер, к которому подключается приложение.
  • Что происходит после очистки кеша приложения?
  • Достаточно ли места на устройстве?
person Idan Adar    schedule 29.10.2013
comment
Это производственная и тестовая среды, две среды, перед которыми стоит балансировщик нагрузки. администраторы балансировщика нагрузки хотят знать, какой путь, прежде чем они слушают меня. Поскольку и IOS, и Android используют один и тот же корень контекста, они считают, что это не имеет к ним никакого отношения. Это происходит на всех устройствах Android. Я также создал новые двоичные файлы и установил их, но проблема все еще есть. - person tik27; 29.10.2013
comment
После того, как приложение подключится к серверу Worklight, вы увидите в ответе (в LogCat) значение контрольной суммы; если это значение контрольной суммы (хранящееся в базе данных Worklight Server) отличается от контрольной суммы веб-ресурсов приложения (хранящейся в устройстве), то будет выполнено прямое обновление. URL-адрес прямого обновления является статическим и является адресом сервера Worklight. - person Idan Adar; 29.10.2013
comment
Что произойдет на вашем тестовом сервере, если вы удалите среду Android (через Worklight Console, рядом с именем среды стоит «x») и повторно развернете приложение youApp-android-1.0.wlapp? Если возможно, добавьте фактический LogCat. - person Idan Adar; 29.10.2013
comment
Также было бы полезно узнать топологию вашего сервера - сколько серверов, сколько баз данных. Пожалуйста, отредактируйте вопрос с этой информацией. - person Idan Adar; 29.10.2013
comment
Обновлено выше, мы обнаружили, что если мы используем http вместо https, работает прямое обновление. Не уверен, почему это будет проблемой сейчас, так как env уже некоторое время работает. - person tik27; 30.10.2013
comment
Спасибо, удалю вопрос. Проблема, похоже, связана с сертификатом, клиент изменил сертификат ssl. Что нас сбило с толку, так это то, что вызов инициализации прошел, хотя обновление не произошло, эта часть - загадка. - person tik27; 31.10.2013
comment
Конечно, вы можете удалить вопрос. - person Idan Adar; 31.10.2013
comment
Оказывается, причина, по которой инициализация работает, но не обновляется, заключается в следующем: инициализация выполняется веб-просмотром, если в манифесте Android xml включена отладка, веб-представление позволяет использовать ненадежные сертификаты. Но прямое обновление использует собственный API, который не - person tik27; 31.10.2013
comment
@tik27, пожалуйста, дайте ответ и отметьте его как отвеченный. - person Idan Adar; 14.03.2014