Android找不到so庫(kù)解決方法

背景

工程項(xiàng)目中礁蔗,有armeabi 、armeabi-v7a兩個(gè)文件夾浴井,而兩個(gè)文件夾中的庫(kù)文件不一樣,編譯運(yùn)行的時(shí)候磺浙,報(bào)錯(cuò)java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader

原因分析

在android APK的根目錄有一個(gè)libs文件夾,此文件夾下包含了armeabi 撕氧、armeabi-v7a兩個(gè)文件夾,有時(shí)候會(huì)有x86的伦泥;一般c代碼編譯成的各種.so庫(kù)就會(huì)放在這兩個(gè)文件夾中。

armeabi和armeabi-7a是表示cpu的類型不脯,一般的手機(jī)或平板都是用arm的cpu,armeabi是針對(duì)普通的或舊的arm cpu防楷,armeabi通用性強(qiáng),但速度慢域帐;armeabi-v7a是針對(duì)有浮點(diǎn)運(yùn)算或高級(jí)擴(kuò)展功能的arm cpu是整,速度快

android的APP在安裝時(shí)浮入,會(huì)將APP中的so庫(kù)拷貝到一個(gè)指定的目錄(ApplicationInfo.nativeLibraryDir),運(yùn)行時(shí)就在這個(gè)指定的目錄下查找對(duì)應(yīng)的so庫(kù)事秀。查找不到則會(huì)報(bào)錯(cuò)。

  1. 在android4.4以下版本的安裝過程中的易迹,是先把所有so庫(kù)全部尋找出來(lái),然后優(yōu)先列出cpu類型(通過ro.product.cpu.abi屬性獲得)目錄下的so庫(kù)睹欲,如果有其他的cpu類型下有跟手機(jī)cpu類型名稱不一致的so庫(kù)一屋,則會(huì)將兼容cpu架構(gòu)(通過ro.product.cpu.abi2屬性獲得)的另外的庫(kù)也列出來(lái)。將列出來(lái)so庫(kù)全部拷貝的系統(tǒng)指定目錄袋哼,以供運(yùn)行時(shí)加載冀墨。 即在android4.4以下版本,一個(gè)so庫(kù)只要在 ro.product.cpu.abi和ro.product.cpu.abi2屬性目錄下至少存在一個(gè)就可以了涛贯。在android4.4以下的arm架構(gòu)的設(shè)備 ro.product.cpu.abi的屬性通常是armeabi-v7a, ro.product.cpu.abi2的屬性值是armeabi诽嘉,并且armeabi-v7a設(shè)備一定兼容armeabi。但不排除某些設(shè)備的ro.product.cpu.abi的屬性為armeabi弟翘。

  2. 在android5.0及以上虫腋,由于增加了arm64的支持,app安裝時(shí)的so庫(kù)拷貝代碼也修改了衅胀。修改成只拷貝一個(gè)最合適的目錄下的so庫(kù)到系統(tǒng)指定目錄岔乔。 在arm架構(gòu)下,64位cpu的優(yōu)先級(jí)是arm64-v8a > armeabi-v7a > armeabi滚躯,32位cpu的優(yōu)先級(jí)是armeabi-v7a > armeabi 雏门,優(yōu)先級(jí)可通過ro.product.cpu.abilist屬性查看。由于android5.0是拷貝整體目錄掸掏,所以在每一個(gè)目錄下的,都必須要有完整的so丧凤,即所有app需要so庫(kù)都要有。例如64位的cpu的設(shè)備上浩螺,
    如果app目錄里存在arm64-v8a子目錄,則只拷貝該目錄下的so庫(kù),其他目錄的so农渊,即使名稱不一樣,也不拷貝传于,如果arm64-v8a子目錄的so庫(kù)不全沼溜,則會(huì)報(bào)錯(cuò)游添。

解決方法

  1. apk中要么增加armeabi文件夾弹惦,需要注意的是悄但,假如增加armeabi文件夾,armeabi-v7a里面的so庫(kù)一定需要全部拷貝過來(lái)助泽,否則還是會(huì)報(bào)錯(cuò)。

  2. 可以刪除了armeabi-v7a文件夾嗡贺,保留armeabi文件夾鞍帝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市摄凡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亲澡,老刑警劉巖纫版,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異癞己,居然都是意外死亡梭伐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惰匙,“玉大人,你說(shuō)我怎么就攤上這事项鬼。” “怎么了绘盟?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吠卷。 經(jīng)常有香客問我,道長(zhǎng)祭隔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任千贯,我火速辦了婚禮,結(jié)果婚禮上搔谴,老公的妹妹穿的比我還像新娘桩撮。我一直安慰自己,他們只是感情好距境,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著师幕,像睡著了一般诬滩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疼鸟,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音浩淘,去河邊找鬼。 笑死张抄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的署惯。 我是一名探鬼主播镣隶,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼诡右,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼轻猖!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蜕依,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤样眠,失蹤者是張志新(化名)和其女友劉穎檐束,沒想到半個(gè)月后被丧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了办陷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啡专。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鲸鹦,靈堂內(nèi)的尸體忽然破棺而出亥鬓,到底是詐尸還是另有隱情嵌戈,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站吗冤,受9級(jí)特大地震影響九府,放射性物質(zhì)發(fā)生泄漏肺蔚。R本人自食惡果不足惜儡羔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望族操。 院中可真熱鬧坪创,春花似錦、人聲如沸柠掂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辜限。三九已至,卻和暖如春颗胡,著一層夾襖步出監(jiān)牢的瞬間毒姨,已是汗流浹背弧呐。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工嵌纲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逮走,地道東北人言沐。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓险胰,卻偏偏與公主長(zhǎng)得像起便,于是被迫代替她去往敵國(guó)和親榆综。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鼻疮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

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