android - уроки - cordova это
Кордова-белый экран после всплеска, без исключений в консоли (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 сделать что-то недавно, что может быть причиной этого? Любые идеи о том, как изолировать это? Я действительно в тупике.
В моем случае я случайно прокомментировал определение состояния в app.js.
Вы должны установить плагин 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" />
Единственное исправление, которое сработало для меня, было найдено здесь: 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>
Ну, это было уродливо. Оказалось, что было исключение, которое было выброшено слишком рано, чтобы инструменты для браузера были выбраны (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 и привяжу другие элементы - и сделаю некоторую очистку, как было предложено выше. Еще раз спасибо, всем.
Отсутствие <meta http-equiv="Content-Security-Policy">
на head
вызвало белый экран в моем случае.
У меня была аналогичная проблема при использовании cordova с ember.js. Речь шла о стратегии изменения URL моего приложения.
Посмотрите на этот ответ , возможно, это связано с вашей проблемой.
У меня такая ситуация и она была решена.
В моем случае это было похоже на этот код:
$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});
Запуск на всех устройствах (по крайней мере, на всех моих устройствах)
Я заставил запустить ваше приложение, это шаги, которые я выполнил.
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