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

Posted

技术标签:

【中文标题】在 Cordova / PhoneGap 中生成 iOS 和 Android 图标【英文标题】:Generating iOS and Android icons in Cordova / PhoneGap 【发布时间】:2014-07-12 21:16:30 【问题描述】:

我有一个新创建的 Cordova 项目,具有以下 config.xml 设置(使用来自 http://docs.phonegap.com/en/edge/config_ref_images.md.html 的说明)。我还添加了 2 个平台(iosandroid)。

当我运行cordova run ioscordova run android 时,项目仍然有默认的Cordova 图标。我对文档的理解是,Corodva 应该根据我在config.xml 中提供的icon.png 自动创建图标。

config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.testapp" version="1.1.2" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>SingleApp</name>
  <preference name="DisallowOverscroll" value="true" />
  <preference name="AutoHideSplashScreen" value="false" />
  <preference name="Orientation" value="portrait" />
  <preference name="Fullscreen" value="false" />
  <preference name="target-device" value="handset" />

  <description>
      A sample Apache Cordova application that responds to the deviceready event.
  </description>
  <author email="dev@cordova.apache.org" href="http://cordova.io">
      Apache Cordova Team
  </author>
  <content src="index.html" />
  <access origin="*" />

  <icon src="icon.png" />

</widget>

【问题讨论】:

在 Cordova 5.1.1 中,图标无法正常工作!在这里查看我的答案以了解有关图标的所有信息:***.com/a/31674547/82609 【参考方案1】:

我编写了一个脚本,它使用 ImageMagick 为 cordova 自动生成图标:

https://github.com/AlexDisler/cordova-icon

要使用它,请创建一个“icon.png”文件并将其放在项目的根文件夹中,然后运行:

cordova-icon

它会为您的项目所拥有的平台生成所有必需的图标。

您还可以将其配置为您的 cordova 项目中的钩子,这样每次构建项目时都会根据您添加的 icon.png 生成图标。 (自述文件中的说明)。

【讨论】:

感谢@Alex 分享该脚本,非常完美:-) 这很好用。谢谢亚历克斯。他也有一个splash screens。 @Alex ,keepitreal:这会覆盖 slpashscreen 的 config.xml 规范吗? 好剧本!谢谢你。我确实得到了一个错误: Cordova 5.1 输出:为 android 生成图标 ✓ drawable-ldpi/icon.png 创建 ✓ drawable-mdpi/icon.png 创建 ✓ drawable-hdpi/icon.png 创建 ✓ drawable-xhdpi/icon.png 创建 [错误:命令失败:转换:无法打开图像platforms/android/res/drawable/icon.png': No such file or directory @ error/blob.c/OpenBlob/2709. convert: WriteBlob Failed platforms/android/res/drawable/icon.png'@error/png.c/MagickPNGErrorHandler/1645。 ] timedOut: false, kill: false, code: 1, signal: null 一些错误的东西,与上面的错误相同。它也不会更新 config.xml,对吗? “离子资源”应该可以解决问题,但也会挂起【参考方案2】:

如果您使用的是 cordova 3.5.0,他们已经更新了文档。在旧版本中,我总是不得不手动替换项目中的图标,但最新版本的科尔多瓦工作正常。

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

正如您在此处看到的https://github.com/phonegap/phonegap-cli/issues/58,这是一个常见问题。因此,如果您使用的是旧版本的 cordova,我建议使用命令 npm update -g cordova 更新它

然后你应该将你的 config.xml 更新为如下内容:

    <icon src="www/res/drawable-xxxhdpi/icon.png" />
    <platform name="android">
          <icon src="www/res/drawable-ldpi/icon.png" density="ldpi" />
          <icon src="www/res/drawable-mdpi/icon.png" density="mdpi" />
          <icon src="www/res/drawable-hdpi/icon.png" density="hdpi" />
          <icon src="www/res/drawable-xhdpi/icon.png" density="xhdpi" />
    </platform>

    <platform name="ios">
              <!-- iOS 7.0+ -->
              <!-- iPhone / iPod Touch  -->
              <icon src="www/res/ios/icon-60.png"   />
              <icon src="www/res/ios/icon-60@2x.png"   />
              <!-- iPad -->
              <icon src="www/res/ios/icon-76.png"   />
              <icon src="www/res/ios/icon-76@2x.png"   />
              <!-- iOS 6.1 -->
              <!-- Spotlight Icon -->
              <icon src="www/res/ios/icon-40.png"   />
              <icon src="www/res/ios/icon-40@2x.png"   />
              <!-- iPhone / iPod Touch -->
              <icon src="www/res/ios/icon.png"   />
              <icon src="www/res/ios/icon@2x.png"   />
              <!-- iPad -->
              <icon src="www/res/ios/icon-72.png"   />
              <icon src="www/res/ios/icon-72@2x.png"   />
              <!-- iPhone Spotlight and Settings Icon -->
              <icon src="www/res/ios/icon-small.png"   />
              <icon src="www/res/ios/icon-small@2x.png"   />
              <!-- iPad Spotlight and Settings Icon -->
              <icon src="www/res/ios/icon-50.png"   />
              <icon src="www/res/ios/icon-50@2x.png"   />
     </platform>

正如您所见,URI 是相对于 cordova 项目的路径,而不是相对于 www 文件夹。

【讨论】:

您知道这是否会将应用程序与仍包含在项目www 文件夹中的所有资产打包在一起吗?如果是这样,这会导致应用程序包膨胀。只是想知道这个新推出是否解决了这个问题? 是的,您可以使用图像在 www/ 之外创建一个文件夹,并从 config.xml 文件中对其进行寻址,该文件夹甚至可以位于 cordova 项目文件夹之外。例如:“../Image_folder” 如果你把它放在 www 文件夹中,它会将应用程序与里面的图像一起打包,如果你将它们放在包之外,它不会增加大小。 Cordova 团队真的应该考虑修复他们的文档和示例,它们中的大多数都是无用的,甚至令人困惑!谢谢【参考方案3】:

图标的config.xml 设置仅适用于PhoneGap Build 服务。添加两个平台后,您需要手动(或者您可以创建一个挂钩,但我自己没有这样做)将您的图标放置在正确的路径中。

对于 iOS:

PROJECT_PATH/platforms/ios/PROJECT_NAME/Resources/icons

对于安卓:

PROJECT_PATH/platforms/android/res/drawable

Android 有许多 res/drawable-* 文件夹,适用于您的应用,但至少添加到 res/drawable

然后运行cordova preparebuildrun

【讨论】:

还是这样吗?感觉这是很久以前解决的问题...... 不确定,这是 3 年前的事了。几年来一直没有使用cordova。【参考方案4】:

如果您愿意安装额外的图标生成软件,您可以使用具有此功能的 Ionic。

执行以下操作:

    npm install ionic -g 将图标和/或闪屏的 png、psd 或 .ai 文件放到 $project_location/resources ionic resources

如果你只想生成图标,有一个方便的键:

ionic resources --icon

更多详情here

【讨论】:

可以工作,但是图片太错误了,我有一个 80Kb 的图像,它总共创建了 12 Mb,我想我最好手动保存它们 ionic 在后台使用cordova-res github.com/ionic-team/cordova-res,如果您不想安装 ionic 可能就足够了 答案中提到了【参考方案5】:

您不需要指定上面有图标的文件夹吗?未找到时,Cordova 会将图标替换为默认图标。

您是否尝试过替换为:

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

【讨论】:

在 Cordova 5.1.1 中,图标无法正常工作!您的答案不适用于 Android。在这里查看我的答案以了解您应该了解的有关图标的所有信息:***.com/a/31674547/82609【参考方案6】:

npm install -g cordova-res

然后cordova-res

还支持安卓的自适应图标

【讨论】:

【参考方案7】:

尝试关注https://www.npmjs.org/package/cordova-gen-icon

例子:

$ cordova create hello com.example.hello
Creating a new cordova project with name "HelloCordova" and id "com.example.hello" at location "hello"
$ cd hello
$ cordova platform add ios
Creating ios project...
Preparing ios project
$ cordova-gen-icon 
Generate cordova icons with
project: .
icon   : ./www/img/logo.png
target : 

generate iOS icons
Success generate icon set

【讨论】:

【参考方案8】:

给那些说&lt;icon src="res/icon.png" /&gt;不工作的人一点解释!

您必须将 icon.png 放在这两个文件夹中

project_name/res/

project_name/platforms/platform_name/res/

步骤:

cordova create hello com.example.hello HelloWorld
cd hello

将您的 icon.png 复制到 project_name/res/ 打开config.xml 并输入&lt;icon src="res/icon.png" /&gt;

之后运行

cordova platform add android

现在将您的 icon.png 复制到 ... hello/platforms/android/res/

然后

cordova build android

最后

adb install  platforms/android/build/outputs/apk/android-debug.apk

之后,您可以在设备上使用您的图标查看您的应用

【讨论】:

【参考方案9】:

请在此处上传您的图标:https://pgicons.abiro.com/

您可以从一个站点轻松获取所有内容,例如图标(所有平台)、启动画面(所有平台)、config.xml(带有生成的图标名称和路径)。

您只需要替换res 文件夹并更新config.xml 即可。

【讨论】:

以上是关于在 Cordova / PhoneGap 中生成 iOS 和 Android 图标的主要内容,如果未能解决你的问题,请参考以下文章

AS+phoneGap+Cordova把网站打包签名成apk

如何在iOS中phonegap插件的点击事件上调整cordova Webview的大小

cordova 使用啥浏览器

如何在 cordova phonegap 项目的 libs 文件夹中添加 Paypal-android-sdk?

在ios设备上集成phonegap inapp购买插件时出错

Phonegap/Cordova 中的本地通知