Wednesday, 7 August 2013

NullPointerException using Proguard and SlidingMenu

NullPointerException using Proguard and SlidingMenu

I have a NPE that's only occurring when I obfuscate my code with Proguard,
hoping somebody can help. I have a quite complicated project that uses
ActionBarSherlock, SlidingMenu, Facebook, Google Play Services, Nine Old
Androids, Simple Crop Image, ViewPagerIndicator, Volley, and
WindowedSeekBar.
It appears to be choking on some code related to SlidingMenu. Here's the
mapped stack trace:
java.lang.NullPointerException
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
at android.app.ActivityThread.access$600(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4898)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.view.ViewGroup.addView(ViewGroup.java:3477)
at android.view.ViewGroup.addView(ViewGroup.java:3460)
at com.slidingmenu.lib.CustomViewAbove.setContent(Unknown Source)
at com.slidingmenu.lib.SlidingMenu.setContent(Unknown Source)
setContent
at com.slidingmenu.lib.SlidingMenu.attachToActivity(Unknown Source)
attachToActivity
at com.slidingmenu.lib.SlidingMenu.attachToActivity(Unknown Source)
attachToActivity
at com.tinder.base.DualSlidingMenu.<init>(Unknown Source)
at com.tinder.base.ActivitySlidingMenuBase.onCreate(Unknown Source)
at com.tinder.activities.ActivityRecommendations.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:5206)
at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
Here's my proguard config file:
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-dontoptimize
-dontpreverify
-keepattributes Signature
-keepattributes *Annotation*
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-dontwarn android.support.**
-dontwarn com.squareup.okhttp.**
-keep class com.facebook.** { *; }
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class com.actionbarsherlock.** { *; }
-keep interface com.actionbarsherlock.** { *; }
-keep class com.slidingmenu.** { *; }
-keep interface com.slidingmenu.** { *; }
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
And here is my code that is crashing:
public class DualSlidingMenu extends SlidingMenu
{
private static final float SLIDING_MENU_FADE_DEGREE = 0.35f;
private Activity mActivity;
public DualSlidingMenu(Activity activity)
{
super(activity);
mActivity = activity;
setMode(SlidingMenu.LEFT_RIGHT);
setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
setShadowWidthRes(R.dimen.sliding_menu_shadow_width);
setBehindOffsetRes(R.dimen.sliding_menu_offset);
setFadeDegree(SLIDING_MENU_FADE_DEGREE);
setFadeEnabled(true);
attachToActivity(activity, SlidingMenu.SLIDING_CONTENT);
setMenu(R.layout.view_menu_content_frame);
setSecondaryMenu(R.layout.view_matches_content_frame);
}
}

No comments:

Post a Comment