這個問題就像一個邏輯謎題。你被警告了。NoClassDefFoundError只有一些設備,只能從playstore?這甚至有可能嗎?
我正在研究與其他應用程序集成的庫。一個人抱怨說,他們看到僅從他們的一些用戶的崩潰:
java.lang.NoClassDefFoundError: com.somecompany.subpackage.SomeAsyncTaskSubclass
at com.somecompany.subpackage.ClassA.instantiateInstanceOfSomeAsyncTaskSubclass(ClassA.java:105)
at
com.somecompany.subpackage.Blah.loadsomedata(MyController.java:180)
at com.somecompany.subpackage.Blah.loadsomemoredata(MyController.java:164)
at com.somecompany.subpackage.SomeView.loadsomemoredata(SomeView.java:213)
com.other.blah.Blah.preloadstuff(Blah.java:118)
at
com.other.blah.Controller.loadSomething(Controller.java:100)
at
com.other.blah.Controller.preloadSomething(Controller.java:144)
at org.cocos2dx.lib.Cocos2dxRenderer.nativeRender(Native Method)
at org.cocos2dx.lib.Cocos2dxRenderer.onDrawFrame(Cocos2dxRenderer.java:94)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1332)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)
和代碼行崩潰的情況是在:
public class ClassA {
public void instantiateInstanceOfSomeAsyncTaskSubclass(){
SomeAsyncTaskSubclass crashHere = new SomeAsyncTaskSubclass(); //<--- this is where it crashes
}
}
,並在同一個包,有...
class SomeAsyncTaskSubclass extends AsyncTask<String, Void, SomeCustomObject> {
// some code here...
}
這是我一直在說或我知道:
這次崩潰只發生在一些用戶身上。 (但基於谷歌播放崩潰報告,所以這只是不準確?或者是生成的樣本太慢?)
開發人員不能在內部重現此錯誤,即使是簽署構建。 (我檢查的簽名版本,並dedexed它看到類在src存在,所以我相信他)
但是,當應用程序是在Play商店,人們下載了他的新版本,他突然看到一些人的崩潰報告,相信主要是設備2.3.x雖然這是未經證實)
他聲稱他更新爲「api 17」。當人們說,他們的意思是建立目標17?或者是否意味着更新到ADT 17?因爲我已經知道ADT弄糟了lib/libs文件夾問題。
他似乎在使用eclipse。
他呼籲從了cocos2d-X我的代碼爲Android,做一個
handler.post()
這怎麼可能?
我很困惑,爲什麼只有一些用戶看到NoClassDefFoundError
?這是一個巨大的谷歌播放崩潰報告問題?就像所有的用戶都看到它,但是然後谷歌播放說只有一些用戶看到這個問題? (我還沒有和開發人員進行過驗證,但是我相當確定他是通過從Play商店下載實時版本進行測試的,他沒有看到任何錯誤,而且這段代碼運行得很好)。
據我所知,NoClassDefFoundError
只有當類通過三個類加載器之一存在時,但在運行時,沒有一個類加載器可以找到特定的類。
這是一個proguard問題?我讀過,proguard只在發佈時運行。
這是一個AsyncTask問題?我已經讀過,AsyncTasks必須在UI線程上第一次實例化。雖然,我不知道爲什麼會導致NoClassDefFoundError
。
有什麼想法?
你有沒有得到這個解決?同樣的事情發生在我身上,其中一些設備沒有問題,有一些我得到了NoClassDefFoundError。謝謝。 –
是的。看到我的答案,看看是否有幫助 –