habrahabr - cordova run android



Кордова-белый экран после всплеска, без исключений в консоли (9)

1 >> Если вы подозреваете, что во время запуска выбрано исключение, вы можете использовать платформу браузера для ее отслеживания. 2 >> Подключите плагины к определенной версии, используя параметр spec в файле config.xml. Это сэкономит вам некоторую душевную боль в будущем.

Я был вдали от своего приложения в Кордове, но недавно сделал новый клон и заметил, что у него есть симптомы «белого экрана смерти» - экран заставки, программа загружается ... а затем я просто получить пустой экран. Еще несколько деталей:

  • CLI: Cordova 6.1.1, android 5.1.1, ios 4.1.1
  • Я не использую никаких специальных плагинов для отображения заставки - просто <splash> элементов в моем файле config.xml .
  • Это происходит как в iOS, так и в Android, как на локальных сборках, так и при использовании PhoneGap Build (т. Е. Отладки и выпуска).
  • Исключения недостающих ресурсов в консоли отсутствуют, либо в iOS (с помощью инструментов разработчика Safari), либо на Android (с помощью инструментов разработчика Chrome).
  • Я сделал разницу с моей последней известной рабочей сборкой , и действительно ничего не вышло. Я видел неопределенную ссылку Underscore, но я поддержал это изменение, и он ничего не разрешил - я думаю, что увижу исключение в консоли, так или иначе.

Может ли Кордова / PhoneGap сделать что-то недавно, что может быть причиной этого? Любые идеи о том, как изолировать это? Я действительно в тупике.


Answer #1

В моем случае я случайно прокомментировал определение состояния в app.js.


Answer #2

Вы должны установить плагин splash-screen для iOS и Android для правильной работы, если вы добавляете всплеск в config.xml . или без плагина с splash-screen что вы могли бы попытаться сделать, это создать заставку с HTML, разделить тело на 2 части: содержимое и логин. Затем вы устанавливаете отображение стиля контента: none. Когда приложение будет загружено, вы просто установили отображение экрана загрузки: нет и экран содержимого: блок или все, что вы хотите

И вы не видите ниже настроек в вашем config.xml

<preference name="SplashScreenDelay" value="3000" />
<preference name="SplashMaintainAspectRatio" value="true|false" />
<preference name="SplashShowOnlyFirstTime" value="true|false" />

Answer #3

Единственное исправление, которое сработало для меня, было найдено здесь: http://www.codingandclimbing.co.uk/blog/ionic-2-fix-splash-screen-white-screen-issue-14

в основном отредактируйте файл config.xml. Настройка всплывающего экрана должна выглядеть так:

<preference name="ShowSplashScreen" value="true"/>
<preference name="SplashScreen" value="screen"/>
<preference name="SplashScreenDelay" value="30000"/>
<preference name="AutoHideSplashScreen" value="false"/>
<preference name="SplashShowOnlyFirstTime" value="false"/>
<preference name="FadeSplashScreen" value="false"/>
<feature name="SplashScreen">
    <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen"/>
</feature>

Answer #4

Ну, это было уродливо. Оказалось, что было исключение, которое было выброшено слишком рано, чтобы инструменты для браузера были выбраны (Safari, Chrome для iOS и Android соответственно). Исключение было cordova platform add browser когда я запускал вещи через целевую cordova platform add browser браузера ( cordova platform add browser и т. Д.). Таким образом, платформа браузера полезна для чего-то, что я думаю. :-)

В моем случае плагин cordova-sqlite-storage сделал изменение API-интерфейса, которое нарушило код, когда я обновил все. Решение заключалось в том, чтобы подключить плагин к более ранней версии в файле config.xml.

Итак, извлеченные уроки:

  • Если вы подозреваете, что при запуске возникает исключение, вы можете использовать платформу браузера, чтобы отслеживать ее.
  • Подключите плагины к определенной версии, используя параметр spec в файле config.xml. Это сэкономит вам некоторую душевную боль в будущем.
  • [еще один вариант из @jcesarmobile, ниже], для обновления в браузере dev инструменты также вышлют исключение. Ницца!

Я вернусь к config.xml и привяжу другие элементы - и сделаю некоторую очистку, как было предложено выше. Еще раз спасибо, всем.


Answer #5

Отсутствие <meta http-equiv="Content-Security-Policy"> на head вызвало белый экран в моем случае.


Answer #6

У меня была аналогичная проблема при использовании cordova с ember.js. Речь шла о стратегии изменения URL моего приложения.

Посмотрите на этот ответ , возможно, это связано с вашей проблемой.


Answer #7

У меня такая ситуация и она была решена.

В моем случае это было похоже на этот код:

$scope.images.push({ id: i, src: "http://placehold.it/50x50" , pstb, trno});

Вышеупомянутый код хорошо работает на android 7.0, но только белый экран после всплеска на Android 4.4.4

Изменено:

$scope.images.push({ id: i, src: "http://placehold.it/50x50", pstb: pstb, trno: trno});

Запуск на всех устройствах (по крайней мере, на всех моих устройствах)


Answer #8

Я заставил запустить ваше приложение, это шаги, которые я выполнил.

1) Сначала вам нужно объявить предпочтение экрана Splash вместе с расположением плагинов экрана в вашем файле config.xml . Это то, что я думаю, что вам не хватает

<preference
    name="SplashScreen"
    value="screen" />
<preference
    name="AutoHideSplashScreen"
    value="true" />
<preference
    name="SplashScreenDelay"
    value="5000" />

<feature name="SplashScreen" >
    <param
        name="android-package"
        value="org.apache.cordova.splashscreen.SplashScreen" />

    <param
        name="onload"
        value="true" />
</feature>

2) Объявите свои изображения заставки в файле config.xml , которые вы уже сделали.

Я предлагаю вам сохранить изображения в папках плотности по умолчанию проекта Android (ldpi, mdpi, hdpi, xhdpi и т. Д.) Вместо папки screen / android, поскольку это упростит вашу структуру проекта.

    <!-- you can use any density that exists in the Android project -->
    <splash
        density="land-hdpi"
        src="res/drawable-land-hdpi/splash.png" />
    <splash
        density="land-ldpi"
        src="res/drawable-land-ldpi/splash.png" />
    <splash
        density="land-mdpi"
        src="res/drawable-land-mdpi/splash.png" />
    <splash
        density="land-xhdpi"
        src="res/drawable-land-xhdpi/splash.png" />
    <splash
        density="port-hdpi"
        src="res/drawable-hdpi/splash.png" />
    <splash
        density="port-ldpi"
        src="res/drawable-ldpi/splash.png" />
    <splash
        density="port-mdpi"
        src="res/drawable-mdpi/splash.png" />
    <splash
        density="port-xhdpi"
        src="res/drawable-xhdpi/splash.png" />
</platform>

3) Добавьте плагин Splash в свой проект в рамках проекта org.apache.cordova.splashscreen или установите заставку плагина Cordova

https://cordova.apache.org/docs/en/3.1.0/cordova/splashscreen/splashscreen.html

4) Окончательный и самый важный шаг, который вы должны иметь cordova.js в своей папке www

И после этого я смог запустить ваше веб-приложение

Я разработчик Android. Я думаю, что-то подобное вам нужно сделать для iOS





cordova