2015-04-16 5 views
5

Le ombre di My CardView sono scomparse sui dispositivi Lollipop dopo l'applicazione di Proguard. Non ho definito alcuna regola per proteggere questa libreria, perché non ho letto che fosse necessaria a tutti.L'ombra di CardView non appare in Lollipop dopo l'offuscamento con proguard

Vi allego un paio di schermate, prima senza eseguire proguard, e dopo averlo eseguito.

Screenshot without proguard

Screenshot with proguard

E questo è il mio 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> 

attività imposta solo la xml come contenuto e non fa nulla di più. Come potete vedere, sto utilizzando le due possibilità di cardUseCompatPadding, ma non risolve il problema poiché è definito in this thread.

Qualcuno sa perché il proguard sta rompendo le mie ombre?

+0

Se hai trovato la tua soluzione, puoi pubblicare una risposta alla tua stessa domanda. – Aracthor

+0

Grazie, lo copierò qui – Ignasi

risposta

7

Dopo alcune immersioni nei pacchetti della libreria, ho scritto una regola che protegge tutto su android.support. ** e ora sto finalmente proteggendo solo android.support.v7.widget.RoundRectDrawable.

Quindi, se si hanno problemi con questo, basta aggiungere la regola successiva a vostra configurazione Proguard:

-keep class android.support.v7.widget.RoundRectDrawable { *; } 
0

FYI, ci sono alcune buone raccolte on-line delle regole Proguard necessarie per ogni libreria, per esempio https://github.com/krschultz/android-proguard-snippets/

Sembra che la regola Proguard sia già stata incorporata in tale progetto e ricollega a questa domanda StackOverflow. :-)
https://github.com/krschultz/android-proguard-snippets/blob/master/libraries/proguard-support-v7-cardview.pro

+1

Sì, l'ho aggiunto tramite [questa PR] (https://github.com/krschultz/android-proguard-snippets/pull/33) :) – Ignasi