Сбой приложения Cordova на телефонах Samsung Marshmallow

#android #cordova #android-6.0-marshmallow #galaxy

#Android #кордова #android-6.0-marshmallow #galaxy

Вопрос:

Я пытаюсь самостоятельно освоить JavaScript, создав небольшое приложение-головоломку / игру с помощью Cordova. У меня работает базовый прототип, и я успешно запустил его для сборки на iPhone, и он работает отлично.

У меня есть 3 телефона Android для тестирования: 1 Marshmallow (бренд BLU), 1 Lollipop и 1 Kitkat … и приложение также отлично работает на них. Я отправил приложение двум друзьям на другой конец страны для тестирования, и оно вылетает на их телефонах Samsung Marshmallow (Galaxy 7 и Galaxy Edge 7). Оно работает некоторое время, а затем просто вылетает без какого-либо пользовательского ввода.

Итак, я попробовал 2 отдельных плагина для анализа сбоев, Fabric и Crittercism. Я могу убедиться, что оба они работают, поскольку я могу вызвать сбой в приложении, и это отображается как отчет о сбое.

Но когда мои друзья запускают приложение с помощью аналитики сбоев, что бы ни происходило, что приводит к сбою приложения, это не вызывает никаких отчетов от Fabric или Crittercism. Я пытался запустить эмулятор Android на своем ПК, но, к сожалению, это процессор AMD, в котором отсутствует необходимая виртуализация. Я даже не могу запустить на своем ПК версию эмулятора super slow ARM, она просто зависает навсегда.

Я только недавно установил cordova и использовал все значения по умолчанию во время установки. Итак, насколько я могу судить, оно должно быть нацелено на Android API 23 (Marshmallow). Но, возможно, есть какая-то другая проблема со сборкой, которая все портит?

Итак, я немного не понимаю, как отладить эту проблему. Я не могу придумать ничего другого, что могло бы сработать, кроме как найти кого-нибудь на месте, кто мог бы одолжить мне Samsung Marshmallow phone для отладки. У кого-нибудь есть какие-нибудь идеи?

Комментарии:

1. Это не решение, но я думаю, вам следует попробовать запустить свое приложение на xcode. И посмотрите, нет ли утечки памяти или ошибок на экране консоли и т.д. Иногда это может дать вам полезную информацию. Удачи!

Ответ №1:

  1. Эмулятор ARM действительно работает мучительно медленно. Я бы предложил сторонний эмулятор. Я использую GenyMotion (который использует VirtualBox под капотом). Возможно, вам с этим повезет. В качестве альтернативы, ManyMo — это облачное решение, которое может оказаться полезным.

  2. Системный веб-просмотр, используемый PhoneGap / Cordova, будет сильно различаться на разных устройствах Android, что означает, что вы можете столкнуться с различными проблемами в разных версиях Android и у разных производителей устройств. Я предлагаю использовать плагин Crosswalk для устранения этих проблем. Обратите внимание, что это увеличит размер вашего APK-файла и площадь установленного приложения на вашем устройстве.

  3. При сбое приложения происходит ли сбой в программе запуска, или приложение само перезагружается (или просто отображается цвет фона)? Я бы не ожидал, что Crashlytics справится с проблемами JavaScript, если только JavaScript не привел к сбою приложения в лаунчере.

Комментарии:

1. спасибо за предложения! 1) Я попробовал эмулятор BlueStacks и не смог воспроизвести его там… Я попробую другие, чтобы посмотреть, работает ли это 2) Я только что попробовал это, и, хотя это увеличило APK с 2 мегабайт до 30 (!), это, похоже, решило проблему. Спасибо! Хотел бы я знать, в чем на самом деле заключалась сделка с Samsung WebView, хотя! 3) На самом деле он возвращается в панель запуска с сообщением типа «Приложение неожиданно завершилось

2. Причина значительного увеличения APK-файлов заключается в том, что вы фактически используете версию Chromium вместе со своим приложением, которая изолирует вас от обновлений веб-просмотра или безумных версий, созданных различными производителями (Samsung и HTC — два моих главных кандидата на действительно странные причуды). Недостатком является размер APK и размер установленного на устройстве, но я считаю, что преимущества перевешивают это. Если бы на вашем целевом рынке были устройства с ограниченным объемом памяти / очень ограниченной пропускной способностью, вам, вероятно, пришлось бы попробовать что-то другое.

3. Я удивлен, что Crashlytics не сообщил о сбое в этом случае. Я бы посоветовал сообщить о проблеме, но создать воспроизводимый тестовый пример может быть довольно сложно и, вероятно, не стоит тратить время, поскольку Crosswalk устраняет вашу проблему.