java.lang.UnsatisfiedLinkError: No implementation found for


最近在android4.4升5.0的項目中,經常遇到java.lang.UnsatisfiedLinkError: No implementation found for的問題,出現這個問題主要是因為MTK或高通5.0的框架代碼相比於4.4有了很大的改變,尤其是它的jni庫等都發生了變化,出現這個錯誤說明是找不到java層引用的那個jni函數。最近發現的可能原因如下:

1. 沒有調用System.loadLibrary()函數加載庫。在4.4中,有些應用的相應load函數是在框架中發生的,而在5.0中卻沒有了,因此首先需要檢查load函數是否存在。對應用而言,load函數最好寫在Application中,可確保一定會被加載。注意庫加載時,比如庫名稱為libtest.so,那么對應的load函數寫法為System.loadLibrary("test");

 

2. 底層庫文件與上層Java jni文件對應的包名或類名發生了變化,這需要核對jni文件注冊的地方jniRegisterNativeMethods(),這個函數對應了上層Java jni的包名和類名。

 

3. 底層庫文件與上層Java jni文件對應的函數名稱,函數參數等發生了變化,這需要核對JNINativeMethod gMethods[],jni函數注冊的地方。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM