使用proguard混淆后,CardView阴影不会出现在Lollipop中

时间:2015-04-16 15:20:49

标签: android proguard android-cardview

应用Proguard后,我的CardView的阴影在Lollipop设备上消失了。我还没有定义任何保护这个库的规则,因为我还没有阅读它是必要的。

我附上了几个屏幕截图,首先是没有运行proguard,然后是运行它后的secon。

Screenshot without proguard

Screenshot with proguard

这是我的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打破了我的阴影吗?

2 个答案:

答案 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