如何在minSdkVersion 21的情况下从矢量可绘制的启动器图标生成PNG?

5

我有一个应用,minSdkVersion=21,现在使用矢量图作为启动器图标。

Google Play拒绝了这个应用,并提示:

You need to check the icon inside your APK because it is not valid

由于需要使用PNG格式的启动器图标,因此我希望在构建过程中生成PNG文件作为启动器图标的一部分,就像将minSdkVersion降低到20一样(但我不能这样做,因为该应用程序与20或更早版本不兼容)。这个可行吗?

编辑:澄清一下,当minSdkVersion < 21时,它是有效的,因为gradle会生成矢量可绘制对象的png版本。但是当minSdkVersion >= 21时,gradle会保留矢量可绘制对象,这对于启动器图标不起作用。问题是是否可以使gradle在minSdkVersion >= 21上构建矢量可绘制对象的png版本,以用于启动器图像。

2个回答

2

看起来谷歌应用商店现在(2017年12月)支持矢量图标作为启动器图标。

我最近上传并发布了一个含有矢量启动器图标的应用


当你的应用程序安装在Android 8上时,这可能会成为一个问题。我曾经遇到过这种情况。 - Taufik Nur Rahmanda
请问您能具体说明遇到了什么问题吗? - Sebastian
1
是的,当我的应用程序在安装在Android Oreo设备上后,我的启动器图标(矢量可绘制的mipmap)显示不正确,前景图标部分更改为Android机器人图标,然后我回退使用png,问题就解决了,因此我认为将png用作启动器图标更安全且受到所有支持。尽管我是矢量图形的忠实粉丝,并且始终在UI中使用它,但我不建议将矢量用作启动器图标,因为它不受几个设备或启动器(或尚未)的支持。请指正。 - Taufik Nur Rahmanda

1

我认为在构建过程中将Android的矢量可绘制格式(也非常类似于SVG)转换为PNG是不可能的。

在您的情况下,您需要手动将矢量可绘制图形转换为SVG,我认为这并不难,然后将通用SVG转换为PNG(ImageMagick工具包中的convert cmd应该很好用)。

如果您需要一些很棒的工具来生成所有大小的启动器图标,请使用在线Web应用Android Asset Studio

无论如何,在构建过程中将Android矢量XML转换为PNG并不是一个好主意,即使可以这样做,您需要编写另一个自定义的Android Gradle插件,该插件可以读取矢量可绘制XML文件并首先将其转换为SVG,然后再转换为最终的PNG格式。这是大量的Java或Groovy代码,对于简单的项目来说太复杂了。


在Android Studio中,它包含了一个像上面的Web应用程序一样的图像资产编辑工具,我认为现在我们可以直接在工作室内编辑我们的图像资产。

我认为在构建过程中将Android的矢量可绘制格式(也非常类似于SVG)转换为PNG是不可能的。但是,当minSdkVersion < 21时,这是可能的。因此,在minSdkVersion < 21上使用矢量可绘制作为启动器图标是可行的,因为Gradle插件会自动将其转换为PNG,但在minSdkVersion >= 21上则无法实现。 - fornwall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接