關(guān)于Android 的 UnsatisfiedLinkError錯誤的解決辦法

(一)Android Studio UnsatisfiedLinkError錯誤的解決辦法**

1:當(dāng)程序報錯:

Caused by: java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList

多半原因是so文件沒有正常加載

2:查明原因:

先判斷是否忘記拷貝對應(yīng)的so文件到對應(yīng)的JNI目錄
查明手機(jī)cpu架構(gòu),到對應(yīng)JNI目錄查看是否有對應(yīng)的so文件

3:解決辦法:

1)將對應(yīng)的so文件拷貝到對應(yīng)的JNI架構(gòu)目錄中
2)如果只有其中某些架構(gòu)的so文件,但是手機(jī)的架構(gòu)有不屬于其中庵寞,那可以在項目中這樣設(shè)置:

<pre style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 8px; position: relative; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; font-size: 14px; line-height: 1.42857; color: rgb(37, 37, 37); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; border: 1px solid rgb(204, 204, 204);">android { defaultConfig {  ndk { // 設(shè)置支持的 SO 庫構(gòu)架喇闸,注意這里要根據(jù)你的實際情況來設(shè)置           abiFilters 'armeabi'// 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips', 'mips64' } } } 如果在添加 “abiFilter” 之后 Android Studio 出現(xiàn)以下提示: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin 在項目根目錄的 gradle.properties 文件中添加: android.useDeprecatedNdk=true</pre>

需要注意的是:這種方法對應(yīng)64位架構(gòu)的手機(jī),但是只有32位的so文件比較有效惶室,關(guān)于架構(gòu)的知識可以查閱百度說明
64位(arm64-v8a)架構(gòu)手機(jī)可以運(yùn)行32位(armeabi armeabi-v7a)的so文件

(二)android studio加載 so文件以及出錯当娱。android java.lang.UnsatisfiedLinkError: 分析及解決方法*

.so庫放到主module的libs/下的對應(yīng)CPU架構(gòu)目錄中卖局,比如libs/armeabi中浓若。
主module的build.gradle文件里面渺杉,android標(biāo)簽里添加:

sourceSets {  
  main {
     jniLibs.srcDirs = ['libs']    
  }
}

這里也有個:http://www.jb51.net/softjc/399605.html

然后是出錯:
android java.lang.UnsatisfiedLinkError: 分析及解決方法"

一, jni還沒有編譯 是一邊編譯一邊用的

這要分兩種情況:
  第一種是unsatisfiedlinkerror:dll名稱。說明dll沒有放到合適的位置挪钓。對于android開發(fā)是越,我們一般把so放在 libs目錄下,但是還是會出現(xiàn)這個錯誤碌上。根本原因system.loadlibrary函數(shù)會加載你指定的so倚评,該so中需要鏈接的所有符號都需要能夠鏈接到,如果有一個鏈接不成功馏予,那么整個so也會加載失敗蔓纠。仔細(xì)檢查so中需要的所有符號,確保其存在且在正確的位置上吗蚌。

第二種是unsatisfiedlinkerror:方法名稱。說明dll已經(jīng)成功加載纯出,但是方法名字錯了蚯妇。這個錯誤最最常見而且基本的解決方法是:仔細(xì)對比你的native 方法的原型確保與javah生成的原型一致敷燎。在java端修改native方法名稱一定要記得更新c/c++端的函數(shù)名稱,這是造成此類錯誤最常見的原因箩言。


二硬贯,是jni已經(jīng)編譯過 直接用別人編譯好的so庫
你建的項目放loadlibrary()的類的包名要和原項目編譯jni時loadlibrary()所在的類名應(yīng)該一致 ,因為jni好像是根據(jù)java包名來命名的陨收,所以改成一致的名字 就ok了

(三)Android studio java.lang.UnsatisfiedLinkError加載.so文件失敗解決辦法

問題:

java.lang.UnsatisfiedLinkError:  
dalvik.system.PathClassLoader[DexPathList[[zip file 
"/data/app/com.example.demozd-1/base.apk"],nativeLibraryDirectories=
[/vendor/lib64, /system/lib64]]] couldn't find "libmsc.so"

很明顯是程序運(yùn)行的時候找不到.so文件導(dǎo)致的饭豹。

解決辦法:

1.確定你的項目里確實有.so文件,如果錯誤和我上面的一樣找不到lib64巴拉巴拉的务漩,你還要確定你的項目里有arm64-v8a這個文件夾拄衰,沒有的話就建一個,然后把a(bǔ)rmeabi中的.so文件拷過去一份饵骨;

2.如果你把所有的.so文件夾都放在libs下了翘悉,需要在你的build.gradle文件中android大括號中加入下面這段代碼:

[java] view plaincopy

<embed id="ZeroClipboardMovie_1" 
 src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" 
 loop="false" 
 menu="false" 
 quality="best" 
 bgcolor="#ffffff"
 width="16"
 height="16"
 name="ZeroClipboardMovie_1"
 align="middle" 
 allowscriptaccess="always" 
 allowfullscreen="false" 
 type="application/x-shockwave-flash" 
 pluginspage="http://www.macromedia.com/go/getflashplayer" 
 flashvars="id=1&amp;width=16&amp;height=16"
 wmode="transparent" style="box-sizing: border-box; 
 outline: 0px; 
 margin: 0px; 
 padding: 0px;
 overflow-wrap: break-word;">


<embed id="ZeroClipboardMovie_2" 
 src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" 
 loop="false" 
 menu="false" 
 quality="best"
 bgcolor="#ffffff" 
 width="16" 
 height="16" 
 name="ZeroClipboardMovie_2" 
 align="middle" 
 allowscriptaccess="always"
 allowfullscreen="false"
 type="application/x-shockwave-flash" 
 pluginspage="http://www.macromedia.com/go/getflashplayer" 
 flashvars="id=2&amp;width=16&amp;height=16" wmode="transparent" 
 style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; 
 overflow-wrap: break-word;"> 

  sourceSets {  
  main {  
  jniLibs.srcDirs = ['libs']  
     }  
  }  

3.如果你的所有.so文件夾是在jniLibs下,那么要確保你的jniLibs文件夾在src/main/這個路徑下居触,不能在src同級目錄妖混。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市轮洋,隨后出現(xiàn)的幾起案子制市,更是在濱河造成了極大的恐慌,老刑警劉巖弊予,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祥楣,死亡現(xiàn)場離奇詭異,居然都是意外死亡块促,警方通過查閱死者的電腦和手機(jī)荣堰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竭翠,“玉大人振坚,你說我怎么就攤上這事≌牛” “怎么了渡八?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長传货。 經(jīng)常有香客問我屎鳍,道長,這世上最難降的妖魔是什么问裕? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任逮壁,我火速辦了婚禮,結(jié)果婚禮上粮宛,老公的妹妹穿的比我還像新娘窥淆。我一直安慰自己卖宠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布忧饭。 她就那樣靜靜地躺著扛伍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪词裤。 梳的紋絲不亂的頭發(fā)上刺洒,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機(jī)與錄音吼砂,去河邊找鬼逆航。 笑死,一個胖子當(dāng)著我的面吹牛帅刊,可吹牛的內(nèi)容都是我干的纸泡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼赖瞒,長吁一口氣:“原來是場噩夢啊……” “哼女揭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起栏饮,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤吧兔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后袍嬉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體境蔼,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年伺通,在試婚紗的時候發(fā)現(xiàn)自己被綠了箍土。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡罐监,死狀恐怖吴藻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弓柱,我是刑警寧澤沟堡,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站矢空,受9級特大地震影響航罗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屁药,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一粥血、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦立莉、人聲如沸绢彤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至械巡,卻和暖如春刹淌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讥耗。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工有勾, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人古程。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓蔼卡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挣磨。 傳聞我的和親對象是個殘疾皇子雇逞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容