0

我有一個應用程序寫了幾年後,我正在維護過程中。該應用程序使用HoloEverywhere和ActionBarSherlock爲舊版本的操作系統提供某些功能。直到最近,這方面從來沒有出現任何問題,所以看到關於本週啓動應用程序崩潰的支持投訴令人非常震驚。這些崩潰都在Android 6.0設備上,並且都帶有以下異常消息。ActionBarSherlock在Android 6.0上崩潰我的應用程序

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.laridian.pocketbible/com.laridian.pocketbible.PocketBibleMainActivity}: java.lang.RuntimeException: java.lang.IllegalAccessException: java.lang.Class<org.holoeverywhere.addon.AddonSherlock$HoloActionBarSherlockNative> is not accessible from java.lang.Class<com.actionbarsherlock.ActionBarSherlock> 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: java.lang.RuntimeException: java.lang.IllegalAccessException: java.lang.Class<org.holoeverywhere.addon.AddonSherlock$HoloActionBarSherlockNative> is not accessible from java.lang.Class<com.actionbarsherlock.ActionBarSherlock> 
at com.actionbarsherlock.ActionBarSherlock.wrap(ActionBarSherlock.java:238) 
at org.holoeverywhere.addon.AddonSherlock$AddonSherlockA.getSherlock(AddonSherlock.java:54) 
at org.holoeverywhere.addon.AddonSherlock$AddonSherlockA.requestWindowFeature(AddonSherlock.java:159) 
at org.holoeverywhere.app.Activity$24.action(Activity.java:515) 
at org.holoeverywhere.app.Activity$24.action(Activity.java:1) 
at org.holoeverywhere.addon.IAddonBasicAttacher.performAddonAction(IAddonBasicAttacher.java:122) 
at org.holoeverywhere.app.Activity.performAddonAction(Activity.java:505) 
at org.holoeverywhere.app.Activity.requestWindowFeature(Activity.java:512) 
at android.support.v4.app._HoloActivity.onInit(_HoloActivity.java:491) 
at android.support.v4.app._HoloActivity.forceInit(_HoloActivity.java:227) 
at org.holoeverywhere.app.Activity.onCreate(Activity.java:225) 
at com.laridian.pocketbible.PocketBibleActivity.onCreate(PocketBibleActivity.java:126) 
at com.laridian.pocketbible.PocketBibleMainActivity.onCreate(PocketBibleMainActivity.java:1180) 
at android.app.Activity.performCreate(Activity.java:6237) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
... 9 more 
Caused by: java.lang.IllegalAccessException: java.lang.Class<org.holoeverywhere.addon.AddonSherlock$HoloActionBarSherlockNative> is not accessible from java.lang.Class<com.actionbarsherlock.ActionBarSherlock> 
at java.lang.reflect.Constructor.newInstance(Native Method) 
at com.actionbarsherlock.ActionBarSherlock.wrap(ActionBarSherlock.java:230) 
... 24 more 

所以我知道這些庫的一些變化。不過,我不確定我能做些什麼。是否有與Android 6.0兼容的ActionBarSherlock新版本? HoloEverywhere是否有適用於Android 6.0的版本?有什麼我在這裏失蹤?或者我將不得不回去重寫我的整個應用程序以支持Android 6.0?

+0

http://stackoverflow.com/questions/31744752/app-crash-in-android-m 試試這個,它爲我工作。 –

回答

1

您正在使用舊版本的廢棄庫。 2年前HoloEverywhere停止使用ABS。 ABS也很久以前就被棄用了。目前沒有人支持這些圖書館。

我的提示:刪除您的HoloEverywhere依賴項。然後擁抱材質和/或將您的minSdk移動到15.

如果您不能這樣做:更新到HoloEverywhere的最後一個版本。這是更快的修復程序,但你正在使用一個廢棄的庫...

+0

您是否真的嘗試過最新版本(當時是2.1.0),還是隻是表明它會起作用? –

+0

這是一個假設。但是知道我知道HoloEverywhere的las版本在6.0上有嚴重問題。請停止使用它。 –

+0

我打算去,但我不確定你爲什麼說最新的作品(自2015年發佈以來)。 –