2

我对shrinkResources有一个奇怪的问题。如果我直接通过属性为我的可绘制对象指定背景,它可以正常工作。但是如果我把它移到样式,shrinkResources 开始缩小它们,认为它们没有被使用。这不像我在运行时连接可绘制的文件名,这很难检测到。在我看来,这是一个非常广泛的案例。

另外我知道我可以列出我的所有可绘制对象,keep.xml以防止它们缩小。但是我有很多文件,并且我计划在将来添加它们,这可能会导致发布中的错误(如果我忘记添加它们)。还有另一种解决方法吗?

样式.xml

<style name="MyStyle">
    <item name="android:background">@drawable/my_drawable</item>
</style>

my_layout.xml

<Button style="@style/MyStyle" ... />

my_drawable.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" >
            <corners android:radius="25dip" />
            <solid android:color="@android:color/white" />
        </shape>
    </item>
</selector>

./gradlew assembleRelease --info

Skipped unused resource res/drawable/my_drawable.xml: 1348 bytes (replaced with small dummy file of size 104 bytes)

my_drawable.xml变为

<?xml version="1.0" encoding="utf-8"?>
<x />

为了论证,我指定了: app/src/main/res/keep.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="safe" />
4

0 回答 0