【问题标题】:phonegap build not showing splashscreenphonegap build 不显示启动画面
【发布时间】:2014-10-12 15:57:59
【问题描述】:

过去有人问过这个问题,但我找到的答案都没有为我解决这个问题。

我正在尝试制作一个非常简单的 phonegap 应用程序来显示启动屏幕并在它准备好时宣布。它只是一个测试应用程序,用于确定如何使用启动画面。

  • 我正在通过 phonegap cli 使用 phonegap 构建。
  • phonegap 版本 3.5.0
  • 仅在 android 上测试

我有一个 config.xml 所在的 www 文件夹。所有启动画面都位于www/res/screen/<platform>/filename.png

我的配置文件是

<?xml version='1.0' encoding='utf-8'?>
<widget id="uk.co.workshop14.splashscreen-example-app" version="0.1.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0">
    <name>splashscreen-example-app</name>
    <description>
        Hello World sample application that responds to the deviceready event.
    </description>
    <author email="support@phonegap.com" href="http://phonegap.com">
        Peter
    </author>

    <preference name="permissions" value="none" />
    <preference name="phonegap-version" value="3.5.0" />
    <preference name="orientation" value="default" />
    <preference name="target-device" value="universal" />
    <preference name="fullscreen" value="true" />
    <preference name="webviewbounce" value="true" />
    <preference name="prerendered-icon" value="true" />
    <preference name="stay-in-webview" value="false" />
    <preference name="ios-statusbarstyle" value="black-opaque" />
    <preference name="detect-data-types" value="true" />
    <preference name="exit-on-suspend" value="false" />
    <preference name="show-splash-screen-spinner" value="true" />
    <preference name="auto-hide-splash-screen" value="false" />
    <preference name="SplashScreenDelay" value="10000" />
    <preference name="disable-cursor" value="false" />
    <preference name="android-minSdkVersion" value="7" />
    <preference name="android-installLocation" value="auto" />

    <gap:plugin name="org.apache.cordova.device" />
    <gap:plugin name="org.apache.cordova.splashscreen" />

    <icon src="icon.png" />
    <icon gap:platform="android" gap:qualifier="ldpi" src="res/icon/android/icon-36-ldpi.png" />
    <icon gap:platform="android" gap:qualifier="mdpi" src="res/icon/android/icon-48-mdpi.png" />
    <icon gap:platform="android" gap:qualifier="hdpi" src="res/icon/android/icon-72-hdpi.png" />
    <icon gap:platform="android" gap:qualifier="xhdpi" src="res/icon/android/icon-96-xhdpi.png" />
    <icon gap:platform="blackberry" src="res/icon/blackberry/icon-80.png" />
    <icon gap:platform="blackberry" gap:state="hover" src="res/icon/blackberry/icon-80.png" />
    <icon gap:platform="ios" height="57" src="res/icon/ios/icon-57.png" width="57" />
    <icon gap:platform="ios" height="72" src="res/icon/ios/icon-72.png" width="72" />
    <icon gap:platform="ios" height="114" src="res/icon/ios/icon-57-2x.png" width="114" />
    <icon gap:platform="ios" height="144" src="res/icon/ios/icon-72-2x.png" width="144" />
    <icon gap:platform="webos" src="res/icon/webos/icon-64.png" />
    <icon gap:platform="winphone" src="res/icon/windows-phone/icon-48.png" />
    <icon gap:platform="winphone" gap:role="background" src="res/icon/windows-phone/icon-173.png" />

    <gap:splash gap:platform="android" gap:qualifier="port-ldpi" src="res/screen/android/screen-ldpi-portrait.png" />
    <gap:splash gap:platform="android" gap:qualifier="port-mdpi" src="res/screen/android/screen-mdpi-portrait.png" />
    <gap:splash gap:platform="android" gap:qualifier="port-hdpi" src="res/screen/android/screen-hdpi-portrait.png" />
    <gap:splash gap:platform="android" gap:qualifier="port-xhdpi" src="res/screen/android/screen-xhdpi-portrait.png" />
    <gap:splash gap:platform="blackberry" src="res/screen/blackberry/screen-225.png" />
    <gap:splash gap:platform="ios" height="480" src="res/screen/ios/screen-iphone-portrait.png" width="320" />
    <gap:splash gap:platform="ios" height="960" src="res/screen/ios/screen-iphone-portrait-2x.png" width="640" />
    <gap:splash gap:platform="ios" height="1136" src="res/screen/ios/screen-iphone-portrait-568h-2x.png" width="640" />
    <gap:splash gap:platform="ios" height="1024" src="res/screen/ios/screen-ipad-portrait.png" width="768" />
    <gap:splash gap:platform="ios" height="768" src="res/screen/ios/screen-ipad-landscape.png" width="1024" />
    <gap:splash gap:platform="winphone" src="res/screen/windows-phone/screen-portrait.jpg" />

    <access origin="*" />
</widget>

【问题讨论】:

    标签: android cordova splash-screen phonegap-build


    【解决方案1】:

    我通过添加解决了这个问题

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

    这是使用 phonegap create 时生成的附加首选项。我也找不到任何好的文档。

    此外,当我添加此首选项时,我不需要像某些问题中所述的默认启动画面

    【讨论】:

    • 一些关于 android 的附加信息:我找到的关于这个主题的唯一“文档”在 CordovaLib/src/org/apache/cordova/CordovaActivity.java 中。如果您检查方法loadUrl,则初始屏幕的值是从preferences.getString("SplashScreen", null) 加载的,而不是getResources().getIdentifier(splash, ...)。问题是SplashScreen 的值并不总是"splash"。就我而言,它是“屏幕”。您可以在platforms/android/ant-build/R.txt中查找值
    • 为我解决了这个问题(屏幕与闪屏)。
    • value 是您的初始屏幕所在的目录。See this post for more info
    【解决方案2】:

    你没有默认的启动标签

    <splash src="splash.png" />
    

    它在文档中: http://docs.phonegap.com/phonegap-build/configuring/icons-and-splash/

    更新

    如果您使用的是 phonegap cli-5.1.1 或更高版本,则需要 npm 提供的新启动画面插件。

    这是github上的新插件,你可以在那里找到如何使用它:

    https://github.com/apache/cordova-plugin-splashscreen

    【讨论】:

    • 就是这个。最后,我不使用默认启动画面(提供特定分辨率),但如果缺少默认启动画面,程序会抛出奇怪的错误
    • 这并不能真正解决问题。默认启动画面图像会在构建时添加到 apk,但会忽略其他图像。
    • 如果这没有帮助,那么您的构建中还有其他问题。我给出的解决方案是并且特定于 OPs 问题。
    • @Sergiu 看看 Adob​​e 论坛中的这篇文章是否对您有帮助:forums.adobe.com/message/9147052#9147052
    • 对我来说,解决方案必须将这个答案与下面的答案结合起来。以及其他一些小改动。您可以在我刚刚发布的回复的链接中找到我的 config.xml。
    【解决方案3】:

    Cordova 将设备级 API 实现为插件。使用命令行界面中描述的 CLI 插件命令为项目添加此功能:请使用以下链接了解更多信息

    http://docs.phonegap.com/en/3.3.0/cordova_splashscreen_splashscreen.md.html

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,我通过将启动图像转换为 .png 而不是 .jpg 来解决它。

      【讨论】:

        【解决方案5】:

        您应该(必须)将您的splash.png-s 放入www/res/drawable-*/splash.pngicon.png-s 在www/res/drawable-*/icon.png 中,以便在www 文件夹下拥有这个结构

        res
        ├── drawable-hdpi
        │   └── icon.png
        ├── drawable-land-hdpi
        │   └── splash.png
        ├── drawable-land-ldpi
        │   └── splash.png
        ├── drawable-land-mdpi
        │   └── splash.png
        ├── drawable-land-xhdpi
        │   └── splash.png
        ├── drawable-land-xxhdpi
        │   └── splash.png
        ├── drawable-land-xxxhdpi
        │   └── splash.png
        ├── drawable-ldpi
        │   └── icon.png
        ├── drawable-mdpi
        │   └── icon.png
        ├── drawable-port-hdpi
        │   └── splash.png
        ├── drawable-port-ldpi
        │   └── splash.png
        ├── drawable-port-mdpi
        │   └── splash.png
        ├── drawable-port-xhdpi
        │   └── splash.png
        ├── drawable-port-xxhdpi
        │   └── splash.png
        ├── drawable-port-xxxhdpi
        │   └── splash.png
        ├── drawable-xhdpi
        │   └── icon.png
        ├── drawable-xxhdpi
        │   └── icon.png
        └── drawable-xxxhdpi
            └── icon.png
        

        你的config.xml 应该包含这些行

            <splash qualifier="land-hdpi" src="res/drawable-land-hdpi/splash.png" />
            <splash qualifier="land-ldpi" src="res/drawable-land-ldpi/splash.png" />
            <splash qualifier="land-mdpi" src="res/drawable-land-mdpi/splash.png" />
            <splash qualifier="land-xhdpi" src="res/drawable-land-xhdpi/splash.png" />
            <splash qualifier="land-xxhdpi" src="res/drawable-land-xxhdpi/splash.png" />
            <splash qualifier="land-xxxhdpi" src="res/drawable-land-xxxhdpi/splash.png" />
            <splash qualifier="port-hdpi" src="res/drawable-port-hdpi/splash.png" />
            <splash qualifier="port-ldpi" src="res/drawable-port-ldpi/splash.png" />
            <splash qualifier="port-mdpi" src="res/drawable-port-mdpi/splash.png" />
            <splash qualifier="port-xhdpi" src="res/drawable-port-xhdpi/splash.png" />
            <splash qualifier="port-xxhdpi" src="res/drawable-port-xxhdpi/splash.png" />
            <splash qualifier="port-xxxhdpi" src="res/drawable-port-xxxhdpi/splash.png" />
            <icon qualifier="hdpi" src="res/drawable-hdpi/icon.png" />
            <icon qualifier="ldpi" src="res/drawable-ldpi/icon.png" />
            <icon qualifier="mdpi" src="res/drawable-mdpi/icon.png" />
            <icon qualifier="xhdpi" src="res/drawable-xhdpi/icon.png" />
            <icon qualifier="xxhdpi" src="res/drawable-xxhdpi/icon.png" />
            <icon qualifier="xxxhdpi" src="res/drawable-xxxhdpi/icon.png" />
        

        完整的图片,这里是我config.xml的android部分

        <platform name="android">
            <allow-intent href="market:*" />
            <preference name="android-minSdkVersion" value="14" />
            <preference name="android-targetSdkVersion" value="22" />
            <preference name="SplashScreen" value="splash" />
            <preference name="SplashScreenDelay" value="3000" />
            <preference name="ShowSplashScreenSpinner" value="false" />
            <preference name="FadeSplashScreen" value="false" />
            <preference name="SplashMaintainAspectRatio" value="true" />
            <preference name="SplashShowOnlyFirstTime" value="false" />
            <preference name="SplashShowOnlyFirstTime" value="false" />
            <splash qualifier="land-hdpi" src="res/drawable-land-hdpi/splash.png" />
            <splash qualifier="land-ldpi" src="res/drawable-land-ldpi/splash.png" />
            <splash qualifier="land-mdpi" src="res/drawable-land-mdpi/splash.png" />
            <splash qualifier="land-xhdpi" src="res/drawable-land-xhdpi/splash.png" />
            <splash qualifier="land-xxhdpi" src="res/drawable-land-xxhdpi/splash.png" />
            <splash qualifier="land-xxxhdpi" src="res/drawable-land-xxxhdpi/splash.png" />
            <splash qualifier="port-hdpi" src="res/drawable-port-hdpi/splash.png" />
            <splash qualifier="port-ldpi" src="res/drawable-port-ldpi/splash.png" />
            <splash qualifier="port-mdpi" src="res/drawable-port-mdpi/splash.png" />
            <splash qualifier="port-xhdpi" src="res/drawable-port-xhdpi/splash.png" />
            <splash qualifier="port-xxhdpi" src="res/drawable-port-xxhdpi/splash.png" />
            <splash qualifier="port-xxxhdpi" src="res/drawable-port-xxxhdpi/splash.png" />
            <icon qualifier="hdpi" src="res/drawable-hdpi/icon.png" />
            <icon qualifier="ldpi" src="res/drawable-ldpi/icon.png" />
            <icon qualifier="mdpi" src="res/drawable-mdpi/icon.png" />
            <icon qualifier="xhdpi" src="res/drawable-xhdpi/icon.png" />
            <icon qualifier="xxhdpi" src="res/drawable-xxhdpi/icon.png" />
            <icon qualifier="xxxhdpi" src="res/drawable-xxxhdpi/icon.png" />
        </platform>
        

        现在执行phonegap remote build android 并从phonegap build 打开日志文件。

        日志文件位于https://build.phonegap.com/apps/X/logs/android/build/,其中X 是您的App ID

        在日志中,您应该会看到类似

        ...
        [crunch] Processing image to cache: /project/res/drawable-hdpi/icon.png => /project/bin/res/drawable-hdpi/icon.png
        [crunch]   (processed image to cache entry /project/bin/res/drawable-hdpi/icon.png: 0% size of source)
        [crunch] Processing image to cache: /project/res/drawable-land-ldpi/splash.png => /project/bin/res/drawable-land-ldpi/splash.png
        ...
        

        如果您看到这些行,那么您的启动画面应该可以工作。

        还要注意config.xml中的这一行

        &lt;preference name="SplashScreen" value="splash" /&gt;

        这告诉 phonegap 构建你的启动屏幕 png 文件被命名为splash.png。这样系统就可以找到它们。

        【讨论】:

          【解决方案6】:

          在研究和尝试了很多之后,终于这对我有用:

          将此添加到您的偏好中:

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

          并在您的第一个启动图像 src 条目之前添加:

          <splash src="splash.png" />
          

          也许值得一提,因为我不知道:

          如果您使用在线 phonegap apk 转换器为您的应用程序启用了水合作用,您将不得不完全重建您的应用程序,而不是仅仅更新它。这也将帮助您处理诸如“方向”或“全屏”之类的偏好!

          【讨论】:

            【解决方案7】:

            在我的情况下,我刚刚添加了 &lt;preference name="ShowSplashScreenSpinner" value="false"/&gt;,它具有魔力。

            这是我的 config.xml 中的 Android 部分

                <platform name="android">
                    <allow-intent href="market:*" />
                    <preference name="ShowSplashScreenSpinner" value="false"/>
                <splash src="res/screen/android/splash-land-hdpi.png" density="land-hdpi"/>
               <splash src="res/screen/android/splash-land-hdpi.png" density="land-ldpi"/>
               <splash src="res/screen/android/splash-land-hdpi.png" density="land-mdpi"/>
               <splash src="res/screen/android/splash-land-hdpi.png" density="land-xhdpi"/>
               <splash src="res/screen/android/splash-land-hdpi.png" density="port-hdpi"/>
               <splash src="res/screen/android/splash-land-hdpi.png" density="port-ldpi"/>
               <splash src="res/screen/android/splash-land-hdpi.png" density="port-mdpi"/>
               <splash src="res/screen/android/splash-land-hdpi.png" density="port-xhdpi"/> 
             </platform>
            

            【讨论】:

              【解决方案8】:

              Phonegap 会定期更新其构建系统,因此您可能还需要跟踪这些更改。直到昨天,我在 android 上看到了 splash,但今天(在 6.5.0 上)没有看到它工作,即使我没有对 config.xml 进行任何更改

              将以下首选项添加到他们最近引入的构建器版本首选项后,它再次起作用。

              <preference name='phonegap-version' value='cli-6.5.0' />
              <preference name='pgb-builder-version' value='2' />
              

              builder-version 1 用于旧构建器,2 用于使用类似 cordova 构建器的新构建器。

              阅读以下 pgb 博客文章了解更多详情。

              https://blog.phonegap.com/phonegap-7-0-1-now-on-build-and-it-includes-some-important-changes-89087fe465f5

              【讨论】:

                【解决方案9】:

                在经历了很多挫折之后,我很庆幸找到了this thread 有各种建议。

                只需将 config.xml 文件中的 splash 元素上的 density 属性更改为 qualifier 即可为我解决此问题。我包括插件声明以防万一。

                <plugin name="cordova-plugin-splashscreen" spec="~5.0.2" />
                
                <platform name="android">
                    <icon qualifier="ldpi" src="www/res/icon/android/drawable-ldpi-icon.png" />
                    <icon qualifier="mdpi" src="www/res/icon/android/drawable-mdpi-icon.png" />
                    <icon qualifier="hdpi" src="www/res/icon/android/drawable-hdpi-icon.png" />
                    <icon qualifier="xhdpi" src="www/res/icon/android/drawable-xhdpi-icon.png" />
                    <icon qualifier="xxhdpi" src="www/res/icon/android/drawable-xxhdpi-icon.png" />
                    <icon qualifier="xxxhdpi" src="www/res/icon/android/drawable-xxxhdpi-icon.png" />
                    <splash qualifier="land-ldpi" src="www/res/screen/android/drawable-land-ldpi-screen.png" />
                    <splash qualifier="land-mdpi" src="www/res/screen/android/drawable-land-mdpi-screen.png" />
                    <splash qualifier="land-hdpi" src="www/res/screen/android/drawable-land-hdpi-screen.png" />
                    <splash qualifier="land-xhdpi" src="www/res/screen/android/drawable-land-xhdpi-screen.png" />
                    <splash qualifier="land-xxhdpi" src="www/res/screen/android/drawable-land-xxhdpi-screen.png" />
                    <splash qualifier="land-xxxhdpi" src="www/res/screen/android/drawable-land-xxxhdpi-screen.png" />
                    <splash qualifier="port-ldpi" src="www/res/screen/android/drawable-port-ldpi-screen.png" />
                    <splash qualifier="port-mdpi" src="www/res/screen/android/drawable-port-mdpi-screen.png" />
                    <splash qualifier="port-hdpi" src="www/res/screen/android/drawable-port-hdpi-screen.png" />
                    <splash qualifier="port-xhdpi" src="www/res/screen/android/drawable-port-xhdpi-screen.png" />
                    <splash qualifier="port-xxhdpi" src="www/res/screen/android/drawable-port-xxhdpi-screen.png" />
                    <splash qualifier="port-xxxhdpi" src="www/res/screen/android/drawable-port-xxxhdpi-screen.png" />
                </platform>
                

                【讨论】:

                  猜你喜欢
                  • 2016-04-19
                  • 1970-01-01
                  • 2014-09-20
                  • 2018-12-07
                  • 2014-05-05
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多