Android:首次运行时删除未使用的特定于分辨率的drawable

时间:2016-07-12 18:33:31

标签: android

我一直在为平板电脑开发一个相当大的应用程序。 由于我不想不必要地耗尽硬件存储空间,我想要删除特定于分辨率的绘图。

更清楚一点,如果使用我的应用的平板电脑运行HDPI分辨率,如果我要删除MDPI和XHDPI资源会有“风险”吗?

据我了解,平板电脑不会改变分辨率,因此这些资源永远不会被使用,因此只会占用存储空间。

有没有充分理由不这样做?

3 个答案:

答案 0 :(得分:1)

  

据我了解,平板电脑不会改变分辨率,因此这些资源永远不会被使用,因此只会占用存储空间。

实际上,从Android N开始,您可以在运行时使用名为显示大小的辅助功能设置中的新选项更改设备的密度。如果您想了解它的外观并了解它是如何工作的,那么Android警察已a nice post about it。一些自定义ROM也在旧版本的Android上执行此操作。

但是,这不会破坏您的应用。 Android非常智能,可以使用您包含的(或在您的情况下,唯一的)您的drawable的关闭DPI版本以及向上或向下缩放图像。最糟糕的情况是你会得到一些模糊或其他缩放瑕疵。

所以有一些缺点和轻微的风险,但没有什么太可怕。谷歌实际上建议为大型应用程序使用单个DPI构建,它们甚至在gradle中提供APK splits功能,以便更容易生成仅包含单个DPI drawable的APK。

答案 1 :(得分:0)

如果您的应用仅在一个特定设备上使用,请转到并删除不必要的drawable。 Btw HDPI不是分辨率,而是屏幕上点的密度。如果你将你的唯一资源放在drawable-hdpi中,那么它将在具有不同密度的设备上按比例放大/缩小,这在最坏的情况下可能看起来很沮丧。但请注意,如果您将资源放在drawable文件夹中(没有指定密度),那么在任何情况下都不会缩放(这不是您想要的)。

您还可以查看使图像变小的不同方法,如颜色索引等。

答案 2 :(得分:-2)

有一个名为shrinkResources 的工具,它会删除未使用的资源,构建时间

将此添加到 build.gradle

android {
    buildTypes {
        release {
            shrinkResources true
        }
    }
}