事情是這樣的:
本身項目是基於android 4.4.2、JDK1.7 編譯的,然後公司要求最低版本。
然後我將項目改成了android 2.3.3、JDK1.6編譯,修改一些內容後,編譯通過,在android 4.4.2的手機上運行正常。
但是現在市場部反應,在低於4.1.X的版本上運行還是有問題,因此我找來一台android 4.0.4內核的手機調試,確實報錯了,在JNI模塊。
報:UnsatisfiedLinkError,找不到調用的那個Native對應在C中的方法,現在我該怎麼辦?
android 4.4.x和android4.1.x在JNI上面有什麼改變?
既然我程序在4.4.2運行成功,證明代碼上沒有問題,編譯也沒有問題,那麼問題到底出在哪裡??
這個問題我才解決掉,原因是因為在Application.mk裡面,多加了一個APP_STL := stlport_shared,然而這個stlport_shared是空的,也不知道他們當時拿來做什麼,就是因為這個為空,導致我的主so加載失敗,也導致了這個問題。
經過這個問題,讓我學到了要認真看每一句log,因為它們真的非常有用!!如果我早點看到那句log,這些問題都不會發生了。而且對jni這塊不熟悉,也是導致拖了那麼久的原因。