2017-05-31 4 views
1

Dans une version récente de mon application, j'ai ajouté proguard. Une erreur bizarre a commencé à apparaître:Est-ce que proguard réduit mes constantes?

Fatal Exception: java.lang.NullPointerException 
Attempt to invoke virtual method 'java.lang.String com.siplay.myapp.b.e.e.b()' on a null object reference 

L'erreur est déclenchée dans cette ligne:

public boolean isVideo() { 
    return Media.MEDIA_TYPE_VIDEO.equals(mImage.getType()); 
} 

MEDIA_TYPE_VIDEO est une constante et est déclarée comme ceci:

public class Media implements Parcelable { 
    ... 
    public static final String MEDIA_TYPE_VIDEO = "video"; 
    ... 
    @Retention(RetentionPolicy.SOURCE) 
    @StringDef({Media.MEDIA_TYPE_VIDEO, Media.MEDIA_TYPE_PHOTO, Media.MEDIA_TYPE_THUMB}) 
    public @interface MediaTypes {} 
    ... 
    public void setType(@MediaTypes String type) { 
     ... 
} 

Je lis Dans beaucoup de messages, Proguard ne joue pas avec les déclarations de constantes. Cependant, il doit s'agir de la constante déformée ou de l'objet mImage. Le stacktrace me dit que ce NPE est déclenché juste après que j'initialiser les vues:

public class MyFragment extends Fragment { 
    ... 
    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     if (savedInstanceState != null) { 
      mImage = savedInstanceState.getParcelable(Constants.BUNDLE_IMAGE); 
      ... 
     } 

     mVideoLoader.setVisibility(View.GONE); 

     if (isVideo()) { //HERE 
      ... 
     } 
     ... 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putParcelable(Constants.BUNDLE_IMAGE, mImage); 
     ... 
    } 
} 

Peut-être que ce qui se passe parce que j'accro de onActivityCreated?

Répondre

3

com.example avec le paquet remplacer la base de Media classe et de mettre cette ligne dans le fichier proguard

-keep class com.example.** { *; } 
+0

Ok. Je vais l'essayer. Je vous ferai savoir si cela le corrige. – 4gus71n

+0

est-ce que cela fonctionne? –

+0

Tout va bien jusqu'ici – 4gus71n