Apache Cordova のスプラッシュ・スクリーン表示がややこしい

Apache Cordova でスプラッシュ・スクリーンを表示するのは大変ややこしいです。

iOS アプリは素でスプラッシュ・スクリーンの機能を持っているため、それが使われているようです。細かいことを考えずに使うことができます。何も考えずに規定で有効になっています。

$ cordova create project1
$ cd project1
$ cordova platform add ios
$ cordova emulate

これだけで、スプラッシュ・スクリーンの表示がされます。(あくまで Apache Cordova 画像のスプラッシュ画像ですが...)

ややこしいのは Android アプリの場合です。規定では有効になっておらず、config.xml に 以下の設定を追加する必要があります。これを追加することで、iOS と同様に Apache Cordova 画像のスプラッシュ・スクリーンが表示されるようになります。

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

ですが、開発版ではこのスプラッシュ・スクリーンの機能が Cordova Plugin の方へ移されたようです。ですので、cordova-android@4.0.0 から cordova-plugin-splashscreen をインストールする必要があります。

$ cordova plugin add org.apache.cordova.splashscreen

しかし、もともと cordova-android に持っている機能が Cordova Plugin でも提供できるのは大変不思議な感じがします。ちょっと調べてみました。

cordova-plugin-splashscreen の該当コードを見ると、こんな感じになっていました。

    // Cordova 3.x.x has a copy of this plugin bundled with it (SplashScreenInternal.java).
    // Enable functionality only if running on 4.x.x.
    private static final boolean HAS_BUILT_IN_SPLASH_SCREEN = Integer.valueOf(CordovaWebView.CORDOVA_VERSION.split("\\.")[0]) < 4;
 @Override
    protected void pluginInitialize() {
        if (HAS_BUILT_IN_SPLASH_SCREEN || !firstShow) {
            return;
        }

cordova-android@4.0.0 より前が使われている場合はこのプラグインが無効化されるようになっています。

cordova-android のコードを見ると cordova-android@3.7.1 の時点で存在していた SplashScreenInternal.java が削除されていますので、cordova-android@4.0.0 以上のバージョンを利用する場合は cordova-plugin-splashscreen が必須になります。

cordova-android@4.0.0 はおそらく次の Apache Cordova 4.4.0 あたりで入ってくるのでしょうか? このバージョン以降を使う方、もしくは cordova platform update でプラットフォームをアップデートする際は要注意です。

もうひとつややこしいことがあります。

cordova-android や cordova-plugin-splashscreen はスプラッシュ・スクリーンの表示を行う機能を持っていますので、ちょこっと設定をいじるだけで Apache Cordova アイコンのスプラッシュ画像は表示できます。ですが、これらはあくまでスプラッシュ・スクリーンの表示を行う機能しかありません。カスタムのスプラッシュ画像を使う場合はさらに cordova-lib の助けが必要です。

実際にカスタム画像をスプラッシュ画像にする場合、以下のように config.xml を修正します。

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

このカスタム画像がアプリに組み込まれ表示される仕組みは大体以下のような感じです。

1. ビルド時に、cordova-lib が config.xml に書かれているスプラッシュ画像を platforms/android/res/drawable-* にコピーする
2. ビルド時に、アプリの中にスプラッシュ画像が埋め込まれる
3. アプリの起動時に cordova-android@4.0.0 より前、もしくは cordova-plugin-splashscreen がスプラッシュ画像を表示する

このようになっていますので、cordova-lib が認識できない解像度のスプラッシュ画像は 1 でコピーされません。結果として、2 でアプリに埋め込まれません。

cordova-lib の該当コードを見るとこうなっていまして、cordova-lib が知っている解像度のものしかコピーされません。(知らないものが config.xml に書かれていても無視されます)

    var sizeToDensityMap = {
        36: 'ldpi',
        48: 'mdpi',
        72: 'hdpi',
        96: 'xhdpi',
        144: 'xxhdpi',
        192: 'xxxhdpi'
    };

つまり、古い cordova-lib を利用してビルドをすると、高解像度版のアイコンやスプラッシュ画像がアプリにうまく埋め込まれないわけです。通常、代替画像が使われますので、表示されないことはほとんど無いと思いますが、意図せずに解像度が合わないものが使われることになります。これは気が付きにくいんですよね...

しかも、cordova-lib は cordova create で作成されたプロジェクトの中にあるわけではなく、cordova コマンドの中にありますので、うっかり古い cordova コマンドでビルドを行うと...

コメント

2

[url=http://webrega.ru/buy/17][img]http://webrega.ru/files/partner/2.png[/img...

Уже более восьми лет мы успешно занимаемся созданием, оптимизацией и продвижением сайтов в интернете.
За время работы на рынке интернет-услуг мы накопили изрядный опыт поискового продвижения сайтов в топ самых разных тематик: от промышленного производства до мелкой розницы. Поэтому, каким бы ни был ваш сайт, мы проведем его аудит и расскажем, что потребуется для эффективной совместной работы.

Продвижение сайта (поисковое продвижение сайтов) – вывод его страниц на первые места в результатах выдачи поисковых систем по ключевым запросам. Цель раскрутки – привлечь как можно больше посетителей, заинтересованных в вашем продукте, и увеличить прибыльность сайта.

Чтобы ресурс оказался на первых местах в результатах поиска, требуется несколько месяцев подготовки. Поисковое продвижение сайта – это долгосрочная инвестиция, оценить эффективность которой вы сможете только через 4-6 месяцев. Выбирая, кому доверить раскрутку сайта

Мы предлагаем вам скидки по всем нашим тарифам .

Cкидки по тарифам достигают от 20% до 50% от стоимости услуги по продвижению вашего сайта

Мы предлагаем своим клиентам большой выбор тарифов по доступным ценам:

Регистрация в каталогах бесплатно
Автоматическая регистрация в каталогах
Регистрация в каталогах сайтов
Регистрация в каталогах статей
Рассылка на доски объявлений
Социальные закладки - рассылка в социальные сети

Купить трафик на сайт:
Трафик на сайт-Украина
Трафик на сайт-Украина
24500-35000 уникальных посетителей на ваш сайт

Понижение alexa rank:
Alexa Rank 100,000 (±10,000)
Alexa Rank 80,000 (±10,000)
Alexa Rank 50,000 (±10,000)

Регистрация в трастовых сайтах
Регистрация профилей на зарубежных форумах
Регистрация профилей на сайтах с Яндекс каталога
Регистрация профилей на DLE сайтах
Тематический подбор форумов и сайтов для продвижения вашего сайта
Гарантированное поднятие ТИЦ сайта на 30-90 пунктов

Услуги копирайтинга
Составление описаний для сайта на английском и русском языке

Контекстная реклама в Google
Контекстная реклама в Яндекс
Комплексное продвижение интернет проектов

Полный список тарифов вы можете посмотреть у нас на сайте

[url=http://webrega.ru/catalog/view/99][b]Для заказа этих тарифов вы должны зарегистрироваться на сайте Webrega.ru[/b][/url] и создать проект в меню- vip регистрация и оплатить согласно выбранному тарифу

[url=http://webrega.ru/catalog/view/243][img]http://webrega.ru/files/partner/...

программа для бесплатной регистрация в каталогах
регистрация в каталогах статей

дружелюбная раскрутка сайта seo оптимизация phpbb
тут продвижение сайта seo studio

заказать оптимизация сайтов продвижение сайта
реферат оптимизация сайтов

веб дизайн и продвижение сайтов казань ipb
недорогое продвижение сайтов

раскрутка сайтов продвижение seo
раскрутка сайтов пособие

реклама в интернете разработка сайта
раскрутка сайта продвижение сайта реклама в интернете

[url=http://webrega.ru/buy/17][img]http://webrega.ru/files/partner/2.png[/img...

Уже более восьми лет мы успешно занимаемся созданием, оптимизацией и продвижением сайтов в интернете.
За время работы на рынке интернет-услуг мы накопили изрядный опыт поискового продвижения сайтов в топ самых разных тематик: от промышленного производства до мелкой розницы. Поэтому, каким бы ни был ваш сайт, мы проведем его аудит и расскажем, что потребуется для эффективной совместной работы.

Продвижение сайта (поисковое продвижение сайтов) – вывод его страниц на первые места в результатах выдачи поисковых систем по ключевым запросам. Цель раскрутки – привлечь как можно больше посетителей, заинтересованных в вашем продукте, и увеличить прибыльность сайта.

Чтобы ресурс оказался на первых местах в результатах поиска, требуется несколько месяцев подготовки. Поисковое продвижение сайта – это долгосрочная инвестиция, оценить эффективность которой вы сможете только через 4-6 месяцев. Выбирая, кому доверить раскрутку сайта

Мы предлагаем вам скидки по всем нашим тарифам .

Cкидки по тарифам достигают от 20% до 50% от стоимости услуги по продвижению вашего сайта

Мы предлагаем своим клиентам большой выбор тарифов по доступным ценам:

Регистрация в каталогах бесплатно
Автоматическая регистрация в каталогах
Регистрация в каталогах сайтов
Регистрация в каталогах статей
Рассылка на доски объявлений
Социальные закладки - рассылка в социальные сети

Купить трафик на сайт:
Трафик на сайт-Украина
Трафик на сайт-Украина
24500-35000 уникальных посетителей на ваш сайт

Понижение alexa rank:
Alexa Rank 100,000 (±10,000)
Alexa Rank 80,000 (±10,000)
Alexa Rank 50,000 (±10,000)

Регистрация в трастовых сайтах
Регистрация профилей на зарубежных форумах
Регистрация профилей на сайтах с Яндекс каталога
Регистрация профилей на DLE сайтах
Тематический подбор форумов и сайтов для продвижения вашего сайта
Гарантированное поднятие ТИЦ сайта на 30-90 пунктов

Услуги копирайтинга
Составление описаний для сайта на английском и русском языке

Контекстная реклама в Google
Контекстная реклама в Яндекс
Комплексное продвижение интернет проектов

Полный список тарифов вы можете посмотреть у нас на сайте

[url=http://webrega.ru/catalog/view/99][b]Для заказа этих тарифов вы должны зарегистрироваться на сайте Webrega.ru[/b][/url] и создать проект в меню- vip регистрация и оплатить согласно выбранному тарифу

[url=http://webrega.ru/catalog/view/243][img]http://webrega.ru/files/partner/...

программа для бесплатной регистрация в каталогах
регистрация в каталогах статей

дружелюбная раскрутка сайта seo оптимизация phpbb
тут продвижение сайта seo studio

заказать оптимизация сайтов продвижение сайта
реферат оптимизация сайтов

веб дизайн и продвижение сайтов казань ipb
недорогое продвижение сайтов

раскрутка сайтов продвижение seo
раскрутка сайтов пособие

реклама в интернете разработка сайта
раскрутка сайта продвижение сайта реклама в интернете

コメントを追加

Filtered HTML

  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 使用できるHTMLタグ: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <img>
  • 次のタグを使用してソースコード構文をハイライトすることができます。: <code>, <blockcode>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <php>, <python>, <ruby> The supported tag styles are: <foo>, [foo].
  • 行と段落は自動的に折り返されます。

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
イメージ CAPTCHA
Enter the characters shown in the image.