如何在 phonegap 项目中添加应用程序图标?

Posted

技术标签:

【中文标题】如何在 phonegap 项目中添加应用程序图标?【英文标题】:How to add app icon within phonegap projects? 【发布时间】:2013-07-23 03:08:37 【问题描述】:

我使用默认的 config.xml 创建了一个新的 phonegap (v 3.0.0-0.14.0) 项目,然后添加了 iosandroid 平台。

配置包含所有平台图标的所有路径。

我已经覆盖了 iOS 和 Android 的默认图标,以便路径和名称仍然与那些 png 匹配。

在模拟器中运行时,图标不显示。我在 xCode 中查找过它,它告诉我图标的“资源”文件夹仍然包含 phonegap 默认图标。与 Android 相同。

我做错了什么?

如何使用 phonegap 添加适用于 iOS 和 Android 的自定义应用图标?

谢谢

我的 config.xml

<icon src="icon.png" />

<icon gap:density="ldpi" gap:platform="android" src="res/icon/android/icon-36-ldpi.png" />
<icon gap:density="mdpi" gap:platform="android" src="res/icon/android/icon-48-mdpi.png" />
<icon gap:density="hdpi" gap:platform="android" src="res/icon/android/icon-72-hdpi.png" />
<icon gap:density="xhdpi" gap:platform="android" src="res/icon/android/icon-96-xhdpi.png" />

<icon gap:platform="ios"  src="res/icon/ios/icon-57.png"  />
<icon gap:platform="ios"  src="res/icon/ios/icon-72.png"  />
<icon gap:platform="ios"  src="res/icon/ios/icon-57-2x.png"  />
<icon gap:platform="ios"  src="res/icon/ios/icon-72-2x.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="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" />

【问题讨论】:

是这个吗?本地构建忽略配置文件? ***.com/questions/15018098/… Markus 是对的,他的评论应该是一个答案 我花了一些时间就调试/使图标工作(cordova 5.1.1)应该知道的所有内容制作了一个常见问题解答。检查***.com/a/31674547/82609 【参考方案1】:

幸运的是,文档中有一些关于启动图像的内容,这也让我走上了为图标图像找到正确位置的道路。就这样吧。

文件的放置位置 使用命令行界面“cordova build ios”构建项目后,platforms/ios/ 文件夹中应该有一个完整的 iOS 应用文件结构。

在该文件夹中是一个以您的应用名称命名的文件夹。其中又包含一个resources/ 目录,您可以在其中找到icons/splashscreen/ 文件夹。

在图标文件夹中,您会找到四个图标文件(57 像素和 72 像素,每个都有普通版和@2x 版)。这些是您目前看到的 Phonegap 占位符图标。

做什么

您所要做的就是将图标文件保存在此文件夹中。那就是:

YourPhonegapProject/Platforms/ios/YourAppName/Resources/icons

闪屏文件也是如此。

备注

    将文件放在那里后,使用 cordova build ios 重建项目并使用 xCode 的“清洁产品”菜单命令。如果没有这个,您仍然会看到 Phonegap 占位符。

    最好以 iOS/Apple 方式重命名文件(即 icon-72@2x.png 等),而不是在 info.plist 或 config.xml 中编辑名称。至少这对我有用。

    顺便说一句,请忽略 config.xml 中为图标提供的奇怪路径和奇怪的文件名(即&lt;icon gap:platform="ios" height="114" src="res/icon/ios/icon-57-2x.png" width="114" /&gt;)。我只是将这些定义留在那里,即使我的 114px 图标被命名为 icon@2x.png 而不是 icon-57-2x.png,图标也能正常显示。

    不要使用 config.xml 来阻止 Apple 对图标的光泽效果。相反,勾选 xCode 中的框(单击左侧导航栏中的项目标题,在 Target 标题下选择您的应用,然后向下滚动到图标部分)。

【讨论】:

不会在 config.xml 中留下文件名破坏 phonegap 构建服务的构建?这仅适用于本地构建忽略 config.xml。如果phonegap决定阅读它怎么办?我建议使用某种构建过程复制这些文件。 嗨,Markus,我没有使用 Phonegap Build 服务的经验(除了在我短暂尝试但未成功时令人困惑)。所以我无法判断你的评论,但我会相信你的话。因此,我的回答只针对那些自己构建的人。 此答案已过时(但适用于 3.0.0)。不再需要手动过程来处理此问题。在此处检查边缘文档和我的答案***.com/a/31674547/82609【参考方案2】:

常见问题解答:图标/启动画面(Cordova 5.x / 2015)

我将我的答案作为一般常见问题解答,它可以帮助您解决我在处理图标/启动画面时遇到的许多问题。您可能会像我一样发现文档并不总是很清楚也不是最新的。这可能会在可用时转到*** documentation。

首先:回答问题

如何使用 phonegap 添加适用于 iOS 和 Android 的自定义应用图标?

在您的 Cordova 版本中icon 标签是无用的。它甚至没有记录在 Cordova 3.0.0 中。您应该使用适合您正在使用的 cli 的文档版本,而不是最新版本!

根据我在不同版本的文档中看到的内容,icon 标签在 3.5.0 版本之前根本不适用于 Android。在 3.4.0 中,他们仍然建议手动复制文件

在较新的版本中:您的 config.xml 对于较新的 Cordova 版本看起来更好。但是,您可能还想知道很多事情。如果您决定升级,这里有一些有用的修改:

您不需要gap: 命名空间 Android 需要&lt;preference name="SplashScreen" value="screen" /&gt;

以下是您在尝试处理图标和启动画面时可能会问自己的问题的更多详细信息:

我可以使用旧版本的 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 &lt;platform&gt; --verbose 获取 cp 命令使用日志,以查看您的图标被复制到何处

图标应该根据配置放在一个文件夹中。 对我来说,它位于许多子文件夹中:platforms/android/build/intermediates/res/armv7/debug/drawable-hdpi-v4/icon.png

然后您可以找到 APK,并将其作为 zip 存档打开以检查图标是否存在。它们必须位于 res/drawable* 文件夹中,因为它是 Android 的 special folder。

我应该将图标/启动画面放在我的项目中的什么位置?

在许多示例中,您会发现图标/启动画面是在 res 文件夹中声明的。 res 是输出 APK 中的一个特殊 Android 文件夹,但这并不意味着您必须在项目中使用 res 文件夹。

您可以将图标放在任何位置,但您使用的路径必须相对于项目的根目录,而不是www,所以要小心!这已记录在案,但不清楚,因为所有示例都使用 res 并且您不知道该文件夹在哪里:(

我的意思是,如果您将图标放在 www/icon.png 中,则绝对必须在路径中包含 www

Edit Mars 2016:升级我的版本后,现在图标似乎与www 文件夹相关,但文档没有更改(issue)

&lt;icon src="icon.png"/&gt; 有效吗?

不,它没有!

在 Android 上,它似乎以前可以工作(当密度属性还不支持的时候?)但现在不行了。看到这个Cordova issue

在 iOS 上,似乎使用此全局声明 may override 更具体的声明,因此请小心并使用 --verbose 进行构建,以确保一切按预期工作。

我可以为所有密度使用相同的图标/启动屏幕文件吗?

是的,你可以。您甚至可以对图标和启动屏幕使用相同的文件(只是为了测试!)。我使用了一个 65kb 的“大”图标文件,没有任何问题。

使用平台标签和平台属性有什么区别

<icon src="icon.png" platform="android" density="ldpi" />

相同
<platform name="android">
    <icon src="www/stample_icon.png" density="ldpi" />
</platform>

如果使用 Phonegap,我应该使用 gap: 命名空间吗?

根据我的经验,Phonegap 或 Cordova 的新版本都能够在不使用任何 gap: xml 命名空间的情况下理解图标声明。

但是我仍然在这里等待有效的答案:cordova/phonegap plugin add VS config.xml

据我了解,gap: 命名空间的某些功能可能更早在 PhonegapBuild 中可用,然后在 Phonegap 中,然后被移植到 Cordova (?)

&lt;preference name="SplashScreen" value="screen" /&gt; 是必需的吗?

至少对于 Android 来说是的。我打开an issue 并进行了额外的解释。

图标声明顺序重要吗?

是的!根据我的测试,它可能对 Android 没有任何影响,但对 iOS 有影响。这是意外且未记录的行为,因此我打开了another issue。

我需要cordova-plugin-splashscreen吗?

是的,如果您希望启动画面正常工作,这绝对是必需的。 文档不清楚 (issue),让我们认为该插件只需要提供启动屏幕 javascript API。

如何快速调整所有宽度/高度/密度的图像大小

有一些工具可以帮助您做到这一点。 对我来说最好的是http://makeappicon.com/,但它需要提供一个电子邮件地址。

其他可能的解决方案是:

AndroidAssetStudio https://gist.github.com/LinusU/7515016 cordova-icon

你能给我一个示例配置吗?

是的。这是我的真实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"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <icon src="www/stample_icon.png"   />
        <splash src="www/stample_splash.png"  />
        <splash src="www/stample_splash.png"  />
        <splash src="www/stample_splash.png"  />
        <splash src="www/stample_splash.png"  />
        <splash src="www/stample_splash.png"  />
        <splash src="www/stample_splash.png"  />
        <splash src="www/stample_splash.png"  />
        <splash src="www/stample_splash.png"  />
        <splash src="www/stample_splash.png"  />
        <splash src="www/stample_splash.png"  />
    </platform>

    <allow-intent href="*" />
    <engine name="browser" spec="^3.6.0" />
    <engine name="android" spec="^4.0.2" />
</widget>

入门工具包是一个很好的示例来源。喜欢phonegap-start 或Ionic starter

【讨论】:

我构建了一个小型 cli 实用程序(以及许多其他实用程序),用于处理应用程序图标、启动屏幕和预览生成 https://github.com/mmacmillan/cordova-imaging,我之所以提到这一点,是因为它由配置文件驱动,该配置文件在大小方面有很好的记录/dimensions/locations,并包含指向平台特定文档的链接;这可能有助于补充您花时间提供的详细答案 我做了所有这一切,使用 Cordova 5.1,文件被复制到 .apk 中,正如你提到的,但平板电脑仍然没有显示新图标。有什么想法吗? 需要做的是卸载旧版本的应用程序,然后安装新版本。然后平板电脑注意到了一些变化。所以,我能够得到新的图标。 多么棒的答案!我使用您建议的cordova build android --verbose 来识别和解决我的问题。谢谢! 很好的回答塞巴斯蒂安 ;) 竖起大拇指【参考方案3】:

从 Cordova 3.5.0-0.2.6 开始,config.xml 中的 &lt;icon /&gt; 元素具有以下注意事项:

    src 属性是相对于项目根文件夹的路径。关于此问题的问题跟踪器更改原因。

    没有分辨率/dpi 的&lt;icon src="..." /&gt; 元素被记录为所有平台用作默认图标的图标。但是,在 android 版本上,默认图标仅复制到 android drawable 文件夹,没有设置特定的分辨率。这使您的自定义图标出现在/res/drawable 文件夹中,并且具有特定分辨率的cordova 默认图标存在于最终apk 内的其他文件夹中(即/res/drawable-ldpi)。 android平台上的每个分辨率都必须在config.xml中添加一个图标元素。

例如,如果您的图标图像位于相对于您的根项目的路径 www/res/img/icon.png 中,则 config.xml 中的这行代码使您的应用程序图标在 android 中有效:

<!-- Default application icon -->
<icon src="www/res/img/icon.png" />
<!--
    Default icon should work, but cordova don't overwrite
    the default on all densities
-->
<icon src="www/res/img/icon.png" platform="android" density="ldpi" />
<icon src="www/res/img/icon.png" platform="android" density="mdpi" />
<icon src="www/res/img/icon.png" platform="android" density="hdpi" />
<icon src="www/res/img/icon.png" platform="android" density="xhdpi" />

使用该配置,您可以为所有分辨率设置一个图像图标,覆盖默认的 cordova 图标,并且无需自定义钩子。只需使用 cordova build android 构建即可。

【讨论】:

您有问题 2 的错误报告链接吗?我刚刚在一个新项目上遇到了这个问题,起初它让我很困惑。如果可能,想跟踪进度以了解何时修复。干杯。 omg 终于让它工作了!谢谢density。我将&lt;icon gap:platform="android" gap:qualifier="ldpi" src="www/res/icon/android/icon-36-ldpi.png" /&gt; 更改为&lt;icon gap:platform="android" density="ldpi" src="www/res/icon/android/icon-36-ldpi.png" /&gt; @Ronoaldo Periera 你是我的救星!! 每个密度的标签!太棒了! 默认图标 src 不适用于 Android,所以实际上它被忽略了!在这里查看我的答案:***.com/a/31674547/82609【参考方案4】:

如果您想要一种易于使用的方式在本地构建时自动添加图标(cordova emulate ioscordova run android 等),请查看以下要点:

https://gist.github.com/LinusU/7515016

希望这将在未来的某个时候开箱即用,这里是 Cordova 项目的相关错误报告:

https://issues.apache.org/jira/browse/CB-2606

【讨论】:

Linus,正如我在回答中所解释的那样,是的,它现在可以工作了,但它似乎也破坏了一些东西,检查***.com/a/31674547/82609【参考方案5】:

您必须创建一个 config.xml 文件,您应该在其中放置图标文件

<?xml version="1.0" encoding="ISO-8859-1" ?>
<widget xmlns = "http://www.w3.org/ns/widgets"
   xmlns:gap = "http://phonegap.com/ns/1.0"
   id        = "example"
   version    = "1.0.0">

   <icon src="icon.png" />
</widget>

检查这个: https://build.phonegap.com/docs/config-xml

有 iOS 特定的图标

【讨论】:

我的配置文件已经包含了所有的图标。新建phonegap项目时默认创建 不起作用。它适用于 PG Build,但 Cordova 3.x cli 不考虑 config.xml 中指定的图标(根目录中的 icon.png 和 screen.png 也不考虑)。也在寻找这个问题的答案。 是的 config.xml 仅适用于 PhoneGap Build!有人知道怎么做吗?! 在 Cordova 3.5.0-0.2.6 上,对图标的支持有效,但在 Android 上有一些警告。详情见我的回答。【参考方案6】:

由于这里的大多数答案都是针对 iOS 的,所以这里有一个在 Android 中更改图标的解决方案。

对于安卓:

\platforms\android\ant-build\res 而不是 \platforms\android\res

中进行更改

对于某些在后一个位置进行更改的人可能有效,但注意到 Phonegap 从 \android\res 复制到 \android\ant-build\res,我决定在那里检查并找到一组单独的可绘制文件夹包含默认的 phonegap 图标。

改变那些终于奏效了。

由于我是在本地构建和运行,而不是使用 Adob​​e PhoneGap Build,因此更改 \www\res\icon\android 中的图标也不起作用。

【讨论】:

【参考方案7】:

我正在运行 phonegap 3.1.0-0.15.0,因为 iOS7 将分辨率更改为 120x120px 我只是将具有这些尺寸的文件添加到项目中,然后更改了 info.plist 文件。

    在项目中添加一个 120x120 的文件,方法是在 Xcode 中右键单击项目文件并选择,“将文件添加到“[Your Project Name]”... 转到 Xcode 中的 info.plist 文件 “Resources/[Your Project Name]-info.plist”"Icon files (iOS 5)/Primary Icon/Icon files" 下,将 "Item 2" 更改为您的文件的任何文件名(我称之为我的“icon -120.png,我将它放在项目文件夹中,与所有其他图标并排放置,尽管这无关紧要)

更多信息可以在这里找到:http://www.digifloor.com/missing-recommended-icon-file-error-ios-app-13

为了修复 iOS 中的启动画面,我只是粘贴了具有相同尺寸和相同文件名的新文件,覆盖了旧文件。只需记住在 Xcode 的菜单栏中转到 Product>Clean(快捷键 Shift+Command+K),它应该可以正常工作! :)

【讨论】:

【参考方案8】:

在 cordova 3.3.1-0.1.2 中,预期的行为无法正常工作。

http://cordova.apache.org/docs/en/3.3.0/config_ref_images.md.html#Icons%20and%20Splash%20Screens

它清楚地表明你应该把它们放在你的主 www 文件夹中的一个名为 res 和 icons 的文件夹中,它们遵循特定的命名约定,而不是原始的可定制 config.xml 指定的方式(在其中你指向一个文件你的选择,哪个/更好)。 然后应该从那里为每个平台将它们放入platforms/?android?/res/drawable-?dpi/icon.png 但此时它没有这种正确的行为......错误。

所以我想我们必须为每个平台手动放置它们。 它当然需要将其从再次复制到 www 文件夹中删除。 对我来说,无论如何我都必须完全替换主 www 文件夹中的内容,因为它根本无法与 hello world 一起使用,而无需破解重定向 index.html 以在那里找到一些奇怪的随机文件夹。 将 res 文件夹放在 www 旁边是最有意义的,但对我来说这似乎是由这一系列级联和令人困惑的设计选择/缺陷造成的。

【讨论】:

【参考方案9】:

在某些情况下,cordova 的内部脚本不会将图标放在正确的文件夹中,因此您可以看到 f*** cordova 机器人而不是您自己的图标。

利用钩子脚本。;)

three-hooks-your-cordovaphonegap-project-needs

在钩子文件夹中创建一个文件夹“after_platform_add”并放置/更改来自 devgirl 的最后一个脚本。

不要忘记为脚本设置执行权限,在 linux "chmod 777 &lt;script&gt;"

祝你好运!

【讨论】:

【参考方案10】:

我所做的只是在 config.xml 中添加以下行 &lt;icon src="www/img/appIcon.png" /&gt;

而且效果很好

【讨论】:

谢谢人。我试图在 res/icon.png 中放置一个图标(如文档示例中所示...),但它从未在 ios 上运行。我终于放弃了那个令人困惑的“res”文件夹,并按照你的建议将图标放在“www”下,它对我来说也很有魅力!这适用于 Cordova 6.0.0。 ios平台。【参考方案11】:

只需将此代码添加到您的 config.xml 文件中

<icon src="path to your icon image">

例如:

<icon src="icon.png">

始终记住您需要使用 .png 扩展名

【讨论】:

尝试使用 png 图片【参考方案12】:

我也在试图了解这一切是如何联系起来的。

这是我迄今为止在 XCode 中发现的内容,但如果我的假设是正确的,我希望得到纠正或肯定。我还没有找到从cordova到xcode的开箱即用构建,它可以正确应用图标。和你一样,我已经更新了 config.xml 中列出的所有图标,但没有骰子。

所以...

首先,我通常将项目根目录中的 config.xml 更新为我的“www”文件夹中的那个(我这样做是因为不确定 www/config.xml 是否具有任何优先级,或者是否已应用)

其次,我更新了项目的“构建阶段”。展开“Copy Bundle Resources”,您已经注意到“Resources/icons”、“Resources/splash”中的所有图像。您可以:

删除所有这些以避免覆盖您的图像或 使用您自己的更新所有这些图像(重命名为列出的图像名称)

在我解决这个问题时,您可能只需从“摘要”选项卡更新图像即可。

将图片从 res 文件夹拖放到“摘要”标签中的相应图片。 (res/icon/ios -> 应用程序图标和 res/screen/ios -> 启动图像)。我只为 iPhone 做这件事,因为我的应用程序只是 iPhone。如果您不想出现光泽,请选中“prerendered”。

然后在查看项目目标时更新项目 plist 文件中引用的“icon.png”:PROJECT_NAME-Info.plist 或“信息”选项卡。将其重命名为“icon-57.png”(现在位于您的项目根目录中,当您进行拖放操作时,它会自动添加到根目录中。

构建并且您应该更新应用图标。

【讨论】:

我使用 Cordova 3.0.3 构建了该项目,但我想它与 phonegap 构建相同。【参考方案13】:

请注意,我刚刚将 config.xml 更改为看起来像 Sebastian 的示例。

在调试所有这些方面也很有帮助,特别是如果您不进行本地构建...是下载从 PhoneGap 云构建的 XAP/IPA/APK 文件并为每个文件创建文件夹。使用 .ZIP 扩展名重命名每个文件,并将每个文件的内容提取到各自的文件夹中。所以基本上,您现在可以看到要运送到手机的包裹中的内容。

这样做,我可以看到,对于 Microsoft Phone 平台,它在很大程度上忽略了我所有尝试替换图标或启动屏幕的尝试。如果您随后替换 ApplicationIcon.png 和 SplashScreenImage.jpg,然后重新压缩文件夹集并将其重命名为 .XAP 文件,您可以将其部署到您的手机上,它会完美运行。不知何故,有一种方法可以让 PhoneGap 构建将您的 icon.png 和 icon.jpg 转换为这两个文件。也许 Masood 的建议在这里是一种可能性,并利用钩子脚本。

对 .IPA 文件 (iOS) 执行相同操作会在 www 上方的父级生成多个文件,例如 icon-something.png。它们似乎都是空白的。

对 .APK 文件 (Android) 执行相同操作会生成一组 res/drawable-something 文件夹,并且每个文件夹中似乎都有我的 icon.png。这是我目前能宣称的最接近成功的一次。

【讨论】:

【参考方案14】:

对我来说,自定义图标不起作用,然后我在以下位置更新了图标并且它起作用了。

项目位置\platforms\android\app\src\main\res

【讨论】:

以上是关于如何在 phonegap 项目中添加应用程序图标?的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap:在标签栏中添加自定义图标

远程构建时如何更改cordova/phonegap的默认图标

如何在phonegap中为ios添加插件?

在 Cordova / PhoneGap 中生成 iOS 和 Android 图标

如何替换 iOS 7 的 phonegap 聚光灯图标?

iOS - 使用不同支持的 iOS 版本的 Phonegap 构建项目的应用程序图标支持错误