Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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) Добавьте класс плагинов заставки в свою структуру проекта Android в пакете org.apache.cordova.splashscreen или установите всплеск экрана Cordova плагин

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

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

Cordova.js в активах

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

введите описание изображения здесь

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

Ответ 3

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

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

Ответ 4

Вы должны установить плагин 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" />

Ответ 5

Попробуйте добавить это предпочтение к вашему config.xml, возможно, это проблема

<preference name="AutoHideSplashScreen" value="true"/>

Ответ 6

Единственное исправление, которое сработало для меня, было найдено здесь: 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>

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

Моя проблема была в ES6, она отлично работает на iPhone и Android 6, но она не работает с Android 4 и 5.

Ответ 11

Я добавил эти строки в config.xml

<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="6000" />

У меня также есть черный экран, когда я даю screendelay как 3000.so я изменился на 6000.Я думаю, что cordova возьму некоторые, чтобы загрузить js, css и файлы изображений.

Ответ 12

В моем случае я помещаю ALERT перед тем, как первый экран все еще установлен.