shrinkResources我遇到了一个奇怪的问题。如果我通过属性直接指定我的drawable的背景,它可以正常工作。但是如果我将它移动到样式,shrinkResources会开始缩小它们,认为它们没有被使用。这不像我在运行时连接可绘制的文件名,很难检测。根据我的观点,这是一个非常广泛的案例。
我也知道我可以在keep.xml
中列出我的所有可绘制内容,以防止它们缩小。但是我有很多文件,我计划在将来添加它们,这可能会导致发布中的错误(如果我忘记添加它们)。还有另一种解决方法吗?
styles.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 />
为了论证我指定: 应用/ SRC /主/ RES / keep.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="safe" />