现象:

Android APP中,引入actionbarsherlock 开源库作为滑动菜单,调试执行没有问题,项目混淆打包后,程序执行异常退出,截获异常log为:

<span style="white-space:pre">	</span>java.lang.ExceptionInInitializerError
	at com.actionbarsherlock.app.SherlockFragmentActivity.getSherlock(Unknown Source)
	at com.actionbarsherlock.app.SherlockFragmentActivity.onTitleChanged(Unknown Source)
	at android.app.Activity.setTitle(Activity.java:4614)
	at android.app.Activity.setTitle(Activity.java:4628)


原因:

混淆打包依赖库,依赖库资源被破坏


解决:

加入例如以下混淆配置项:


-dontwarn com.actionbarsherlock.**
-keep class com.baidu.** { *;}
-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-keep class com.actionbarsherlock.** { *; } 
-keep interface com.actionbarsherlock.** { *; } 
-keepattributes *Annotation*