我对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" />