Часто задаваемые вопросы: ICON / SPLASH SCREEN (Cordova 5.x / 2015)
Я представляю свой ответ в виде общих часто задаваемых вопросов, которые могут помочь вам решить многие проблемы, с которыми я столкнулся при работе со значками / заставками. Вы можете узнать, как и я, что документация не всегда очень четкая и актуальная. Это, вероятно, попадет в документацию StackOverflow, когда она будет доступна.
Первое: ответ на вопрос
Как я могу добавить пользовательские значки приложений для iOS и Android с помощью телефонного разговора?
В вашей версии Кордоваicon
тег бесполезно. Это даже не задокументировано в Cordova 3.0.0. Вы должны использовать ту версию документации, которая подходит для используемого вами cli, а не последнюю версию!
Значок Тег не работает для Android вообще до версии 3.5.0 в соответствии с тем, что я могу видеть в различных версиях документации. В 3.4.0 по-прежнему советуют вручную копировать файлы
В более новых версиях : вы config.xml
выглядите лучше для новых версий Cordova. Однако есть еще много вещей, которые вы, возможно, захотите узнать. Если вы решили обновить, вот несколько полезных вещей, которые нужно изменить:
- Вам не нужно
gap:
пространство имен
- Вам нужно
<preference name="SplashScreen" value="screen" />
для Android
Вот более подробная информация о вопросах, которые вы можете задать себе, пытаясь разобраться со значками и заставкой:
Могу ли я использовать старую версию Cordova / Phonegap
Нет, функции значков / заставок не было в предыдущих версиях Cordova, поэтому вы должны использовать последнюю версию. В предыдущих версиях только Phonegap Build обрабатывал значки / заставку, поэтому локальная сборка и обработка значков были возможны только с помощью крючка. Я не знаю минимальную версию для использования этой функции, но с 5.1.1 она отлично работает как в Cordova / Phonegap cli. С Cordova 3.5 у меня не получилось.
Изменить : для Android вы должны использовать не менее 3.5.0
Как я могу отладить процесс сборки значков?
Cli использует команду CP. Если вы укажете неверный путь к значку, появится сообщение cp
об ошибке:
sebastien@sebastien-xps:cordova (dev *+$%)$ cordova run android --device
cp: no such file or directory: /home/sebastien/Desktop/Stample-react/cordova/res/www/stample_splash.png
Изменить : вы должны использовать cordova build <platform> --verbose
для получения журналов использования команды cp, чтобы увидеть, куда копируются ваши значки
Иконки должны помещаться в папку согласно конфигу. Для меня это находится во многих подпапках:platforms/android/build/intermediates/res/armv7/debug/drawable-hdpi-v4/icon.png
Затем вы можете найти APK и открыть его как zip-архив, чтобы проверить наличие значков. Они должны находиться в res/drawable*
папке, потому что это специальная папка для Android.
Куда мне поместить значки / заставки в моем проекте?
Во многих примерах вы обнаружите, что значки / заставки объявлены внутри res
папки. Это res
специальная папка Android в выходном APK, но это не означает, что вы должны использовать res
папку в своем проекте.
Вы можете разместить свой значок где угодно, но путь, который вы используете, должен быть относительно корня проекта , www
поэтому будьте осторожны! Это задокументировано, но не ясно, потому что используются все примеры, res
и вы не знаете, где находится эта папка :(
Я имею в виду, что если вы поместите значок, www/icon.png
вы обязательно должны включить его www
в свой путь.
Edit Mars 2016 : после обновления моих версий теперь кажется, что значки относятся к www
папке, но документация не была изменена ( проблема )
Работает <icon src="icon.png"/>
?
Нет! .
На Android кажется, что раньше он работал (когда атрибут плотности еще не поддерживался?), Но теперь его нет. См. Этот выпуск Кордовы
В iOS кажется, что использование этого глобального объявления может переопределить более конкретные объявления, поэтому позаботьтесь --verbose
о том, чтобы все работало должным образом.
Могу ли я использовать один и тот же файл значков / заставок для всех плотностей.
Да, ты можешь. Вы даже можете использовать один и тот же файл как для значка, так и для заставки (просто для проверки!). Я без проблем использовал "большой" файл значков размером 65 Кб.
В чем разница при использовании тега платформы и атрибута платформы
<icon src="icon.png" platform="android" density="ldpi" />
такой же как
<platform name="android">
<icon src="www/stample_icon.png" density="ldpi" />
</platform>
Следует ли использовать пространство имен gap: при использовании Phonegap?
По моему опыту, новые версии Phonegap или Cordova способны понимать объявления значков без использования какого-либо gap:
пространства имен xml.
Однако я все еще жду правильного ответа здесь: плагин cordova / phonegap добавить VS config.xml
Насколько я понимаю, некоторые функции с gap:
пространством имен могут быть доступны раньше в PhonegapBuild, затем в Phonegap, а затем переносятся на Cordova (?)
Является ли <preference name="SplashScreen" value="screen" />
требуется?
По крайней мере, для Android - да. Я открыл вопрос с дополнительными объяснениями.
Имеет ли значение порядок объявления значков?
Да! Согласно моим тестам, это может не повлиять на Android, но на iOS. Это неожиданное и недокументированное поведение, поэтому я открыл другую проблему .
Мне нужно cordova-plugin-splashscreen
?
Да, это абсолютно необходимо, если вы хотите, чтобы заставка работала. Документация не ясна ( проблема ), и давайте подумаем, что плагин требуется только для того, чтобы предлагать javascript API для заставки.
Как я могу быстро изменить размер изображения для любой ширины / высоты / плотности
Есть инструменты, которые помогут вам в этом. Лучше всего для меня http://makeappicon.com/, но для этого нужно указать адрес электронной почты.
Другие возможные решения:
Можете привести пример конфига?
Да. Вот мой настоящийconfig.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="co.x" version="0.2.6" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:gap="http://phonegap.com/ns/1.0">
<name>x</name>
<description>
x
</description>
<author email="info@x.co" href="https://x.co">
x
</author>
<content src="index.html" />
<preference name="permissions" value="none" />
<preference name="webviewbounce" value="false" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#0177C6" />
<preference name="detect-data-types" value="true" />
<preference name="stay-in-webview" value="false" />
<preference name="android-minSdkVersion" value="14" />
<preference name="android-targetSdkVersion" value="22" />
<preference name="phonegap-version" value="cli-5.1.1" />
<preference name="SplashScreenDelay" value="10000" />
<preference name="SplashScreen" value="screen" />
<plugin name="cordova-plugin-device" spec="1.0.1" />
<plugin name="cordova-plugin-console" spec="1.0.1" />
<plugin name="cordova-plugin-whitelist" spec="1.1.0" />
<plugin name="cordova-plugin-crosswalk-webview" spec="1.2.0" />
<plugin name="cordova-plugin-statusbar" spec="1.0.1" />
<plugin name="cordova-plugin-screen-orientation" spec="1.3.6" />
<plugin name="cordova-plugin-splashscreen" spec="2.1.0" />
<access origin="http://*" />
<access origin="https://*" />
<access launch-external="yes" origin="tel:*" />
<access launch-external="yes" origin="geo:*" />
<access launch-external="yes" origin="mailto:*" />
<access launch-external="yes" origin="sms:*" />
<access launch-external="yes" origin="market:*" />
<platform name="android">
<icon src="www/stample_icon.png" density="ldpi" />
<icon src="www/stample_icon.png" density="mdpi" />
<icon src="www/stample_icon.png" density="hdpi" />
<icon src="www/stample_icon.png" density="xhdpi" />
<icon src="www/stample_icon.png" density="xxhdpi" />
<icon src="www/stample_icon.png" density="xxxhdpi" />
<splash src="www/stample_splash.png" density="land-hdpi"/>
<splash src="www/stample_splash.png" density="land-ldpi"/>
<splash src="www/stample_splash.png" density="land-mdpi"/>
<splash src="www/stample_splash.png" density="land-xhdpi"/>
<splash src="www/stample_splash.png" density="land-xhdpi"/>
<splash src="www/stample_splash.png" density="land-xhdpi"/>
<splash src="www/stample_splash.png" density="port-hdpi"/>
<splash src="www/stample_splash.png" density="port-ldpi"/>
<splash src="www/stample_splash.png" density="port-mdpi"/>
<splash src="www/stample_splash.png" density="port-xhdpi"/>
<splash src="www/stample_splash.png" density="port-xxhdpi"/>
<splash src="www/stample_splash.png" density="port-xxxhdpi"/>
</platform>
<platform name="ios">
<icon src="www/stample_icon.png" width="180" height="180" />
<icon src="www/stample_icon.png" width="60" height="60" />
<icon src="www/stample_icon.png" width="120" height="120" />
<icon src="www/stample_icon.png" width="76" height="76" />
<icon src="www/stample_icon.png" width="152" height="152" />
<icon src="www/stample_icon.png" width="40" height="40" />
<icon src="www/stample_icon.png" width="80" height="80" />
<icon src="www/stample_icon.png" width="57" height="57" />
<icon src="www/stample_icon.png" width="114" height="114" />
<icon src="www/stample_icon.png" width="72" height="72" />
<icon src="www/stample_icon.png" width="144" height="144" />
<icon src="www/stample_icon.png" width="29" height="29" />
<icon src="www/stample_icon.png" width="58" height="58" />
<icon src="www/stample_icon.png" width="50" height="50" />
<icon src="www/stample_icon.png" width="100" height="100" />
<splash src="www/stample_splash.png" width="320" height="480"/>
<splash src="www/stample_splash.png" width="640" height="960"/>
<splash src="www/stample_splash.png" width="768" height="1024"/>
<splash src="www/stample_splash.png" width="1536" height="2048"/>
<splash src="www/stample_splash.png" width="1024" height="768"/>
<splash src="www/stample_splash.png" width="2048" height="1536"/>
<splash src="www/stample_splash.png" width="640" height="1136"/>
<splash src="www/stample_splash.png" width="750" height="1334"/>
<splash src="www/stample_splash.png" width="1242" height="2208"/>
<splash src="www/stample_splash.png" width="2208" height="1242"/>
</platform>
<allow-intent href="*" />
<engine name="browser" spec="^3.6.0" />
<engine name="android" spec="^4.0.2" />
</widget>
Хорошим источником примеров являются стартовые комплекты. Как начало разговора по телефону или ионный пускатель