【发布时间】:2015-01-31 12:15:24
【问题描述】:
我熟悉使用 make 构建大型应用程序,但现在我已经开始使用 Android Studio,我想了解如何做我已经在 Makefile 中做的事情。
这里有一个例子可以帮助你构建答案:
Makefile 示例:(极简主义)
INK=inkscape
INKFLAGS=--export-area-page
# Resolve *.png dependencies
drawable-mdpi/%.png: %.svg
$(INK) $< --export-png=$@ -w 48 -h 48 $(INKFLAGS)
drawable-hdpi/%.png: %.svg
$(INK) $< --export-png=$@ -w 72 -h 72 $(INKFLAGS)
drawable-xdpi/%.png: %.svg
$(INK) $< --export-png=$@ -w 96 -h 96 $(INKFLAGS)
更简单的例子:
drawable-mdpi/ic_launcher.png: ic_launcher.svg
inkscape ic_launcher.svg --export-png=ic_launcher.png -w 48 -h 48 --export-area-page
drawable-hdpi/ic_launcher.png: ic_launcher.svg
inkscape ic_launcher.svg --export-png=ic_launcher.png -w 72 -h 72 --export-area-page
如何在 Gradle 中做到这一点?
我想解决上面例子中提到的外部依赖。实际上我是通过'make'来做的,但我想完全删除这个额外的步骤。
【问题讨论】:
-
Gradle 默认编译你的android项目中“drawable”文件夹中的所有可绘制媒体。它还会自动识别子文件夹,例如 drawable-hdpi 和 drawable-mdpi,并在适当且可用的情况下使用这些子文件夹来查找合适的图像以获得分辨率。 build.gradle 文件中有一个
dependencies标签,但据我所知,它主要用于从项目中添加外部 JARS 或像 Maven 一样,为外部存储库提供地址以便为您下载库。希望对您有所帮助。 -
@G_V 我知道,我想解决我的示例中提到的外部依赖项。修改时手动导出每个图像是无效的。事实上,目前我正在使用'make'来做,但我想完全删除这个额外的步骤。
-
我可以想象,我自己在后台线程的代码中预缩放所有内容,然后在需要时缓存我需要的内容。除非您有数百个大型可绘制对象,否则效果很好,在这种情况下,缩放本身仍然不会减慢应用程序的速度,但垃圾收集器会。我真的帮不了你,但也许 Gradle 的 recommended books 更有用。