如何使用 minSdkVersion 21 从矢量可绘制启动器图标生成 png?

for*_*all 5 android google-play android-studio android-gradle-plugin android-vectordrawable

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

Google Play 拒绝该应用程序

You need to check the icon inside your APK because it is not valid
Run Code Online (Sandbox Code Playgroud)

因为它需要 PNG 格式的启动器图标。

我想在构建过程中为启动器图标生成 PNG 文件,就像我将 minSdkVersion 降低到 20 一样(但我不能这样做,因为该应用程序与 20 或更早版本不兼容)。这可能吗?

编辑:为了澄清,它在 minSdkVersion < 21 时起作用,因为 gradle 负责生成矢量可绘制对象的 png 版本。但是,当 minSdkVersion >= 21 时,gradle 会按原样保留矢量可绘制对象,这对于启动器图标不起作用。问题是是否可以让 gradle 为启动器图像构建 png 版本的矢量绘图,即使在 minSdkVersion >= 21 上也是如此。

Jac*_*cob 1

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

在你的情况下,你需要手动将矢量drawable转换为SVG,我认为这并不难,然后将通用SVG转换为PNG(在ImageMagick工具包中转换cmd应该很酷)。

如果您需要一些很酷的工具来生成所有尺寸的启动器图标集,请使用在线网络应用程序Android Asset Studio

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


https://developer.android.com/studio/write/image-asset-studio.html#access 在Android Studio中,它包含一个图像资源编辑工具,就像上面的Web应用程序一样,我想我们可以直接在里面编辑我们的图像资源现在的工作室。