应用Proguard后,我的CardView的阴影在Lollipop设备上消失了。我还没有定义任何保护这个库的规则,因为我还没有阅读它是必要的。
我附上了几个屏幕截图,首先是没有运行proguard,然后是运行它后的secon。
这是我的xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<android.support.v7.widget.CardView
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_margin="4dp"
app:contentPadding="10dp"
app:cardUseCompatPadding="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text 1"/>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_margin="4dp"
app:contentPadding="10dp"
app:cardUseCompatPadding="false">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text 2"/>
</android.support.v7.widget.CardView>
</LinearLayout>
Activity仅将xml设置为内容,不再执行任何操作。
正如您所看到的,我使用了cardUseCompatPadding
的两种可能性,但它并没有解决this thread中定义的问题。
有人知道为什么proguard打破了我的阴影吗?
答案 0 :(得分:7)
在库包中潜水后,我编写了一条规则来保护android.support上的所有内容。**现在我终于保护了android.support.v7.widget.RoundRectDrawable。
因此,如果您遇到麻烦,只需在proguard配置中添加下一条规则:
-keep class android.support.v7.widget.RoundRectDrawable { *; }
答案 1 :(得分:0)
仅供参考,每个图书馆都有一些很好的在线收集Proguard规则,例如: https://github.com/krschultz/android-proguard-snippets/
看起来您的Proguard规则已经被吸收到该项目中,并且它链接回此Stackoverflow问题。 :-)
https://github.com/krschultz/android-proguard-snippets/blob/master/libraries/proguard-support-v7-cardview.pro