1. 程式人生 > >Android 開發 so庫檔案找不到不錯

Android 開發 so庫檔案找不到不錯



java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.imobi.callblocker-2/base.apk"],nativeLibraryDirectories=[/data/app/com.imobi.callblocker-2/lib/arm, /data/app/com.imobi.callblocker-2/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]] couldn't find "libwebrtc.so"

遇到這個問題,真的很服氣,我的領導很長時間沒弄出來,這是我第一次解決了他未解決的問題,感覺自己not the same。哈哈,我希望自己能獨立,快速的獨立。  not the same。

下面說下解決辦法 :

這是引用so庫時的錯誤,找不到so檔案。

1.首先把在armeabi的同目錄下建一個資料夾armeabi-v7a,把armeabi的檔案copy一份到armeabi-v7a,build一下專案。

2.

defaultConfig中加入
ndk {
    // 設定支援的SO庫架構
abiFilters 'armeabi' ,'arm64-v8a'
}

在後期的開發中,我又遇到了同樣的問題,由於問題的不斷地深入我不斷的加深對於引入so庫檔案的理解。上述的方法只是巧合能解決nexus5的手機,但是對於三星的手機是不可行的,原因是由於每種手機的cpu型號不行,所對應的so庫檔案打包時不同。具體的說一下:其實手機的cpu型號是不同的,有很多的平臺,1.armeabiv-v7a: 第7代及以上的 ARM 處理器。2011年15月以後的生產的大部分Android裝置都使用它.2.

arm64-v8a: 第8代、64位ARM處理器,很少裝置,三星 Galaxy S6是其中之一。3.armeabi: 第5代、第6代的ARM處理器,早期的手機用的比較多。4.x86: 平板、模擬器用得比較多。5.x86_64: 64位的平板。這是不同的平臺,我們都知道在版本迭代的過程中必須考慮相容性的問題,在你的程式中首先找的高版本的arm,現在的情況是從v8a開始v7a再到armeabi,再到平板。

你可以在androidstudio中檢視你引用的so庫,在你的專案中你自己引用的so庫不是全部的,你依賴jar包中也會引用so庫。下面接受檢視你的專案中引用的全部so庫,如下圖:

按照圖中的仙姑目錄開啟,雙擊1處,找到2處的lib檔案目錄,檢視引入so庫檔案的全部詳情,so庫的打包與cpu平臺型號是對應的,不能隨便的對應。

假如你有2個so庫檔名字為1,2不在同一目錄,app專案會根據從高版本查詢,一旦找到有一個so引假如是:1,就不會在向下尋找,2在低版本的arm平臺就會報錯,找不到2.so這個庫,如果你看懂了上述的敘述,你肯定就會知道怎樣解決,又不明白的歡迎留言,我都線上的。

在這裡在加一個小技巧,怎樣提取已經apk檔案中的jar包:

1.將apk檔案的檔案型別apk改為zip,2.用解壓工具解壓後直接搜尋.so檔案。你明白檔案目錄的話自己找也不是問題。

相關推薦

Android 開發 so檔案不錯

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.imobi.callblocker-2/base.apk"],nativeLi

error while loading shared libraries: libgmp.so.10 GMP 到共享檔案問題

編寫了一個使用GMP庫的程式,編譯可以通過,但是執行總是提示錯誤: error while loading shared libraries: libgmp.so.10: cannot open shared object file: No such file or dir

Android studio so到問題

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[ zip file "/dat

Android -- 出現.so檔案到時怎麼處理

一. 問題在專案中我們有時會遇到這樣的錯誤: cannot find “xxx.so”這其中有兩種原因導致的錯誤,這種錯誤可能會讓我們的應用程式產生閃退和ANR錯誤(應用程式無響應),我們的解決辦法也是從這兩個方面入手二. 解決(1).so檔案沒有被呼叫在model下的bui

mac os 下建立 android avd 後啟動報到 avd ini 檔案 問題解決方法

在 Mac OS 上建立了android虛擬機器(avd)後,啟動的時候報找不到adv對應的ini檔案 PANIC: Could not open: ~/.android/avd/android4.0.3.ini 此檔案是建立虛擬機器的時候生成的,可以先查詢此檔案是否在別的位置: sudo find

linux 安裝JDK libjli.so 檔案

liunx 安裝JDK時 報出 java-error-while-loading-shared-libraries-libjli-so 或者沒有找到該資料夾 yum install lrszs sz 下載 rz 上傳 本人jdk echo $JAVA_HOME

Android SO檔案頭分析

轉自:因為專案的需要,我對Android系統載入.so檔案有一些些研究,把最近看過的一些大牛的分析和現狀結合一下,寫篇東西做一下筆記。.so 檔案是什麼.so 檔案是 Shared Object 檔案的字尾,直白的說就是Linux系統中的“動態連結庫” ,就和Windows系

Android so檔案的區節section修復程式碼分析

一、Android so庫檔案的節表secion修復方案整理              https://bbs.pediy.com/thread-191649.htm             2. ELF section修復的一些思考              

【iOS 】swift專案使用pod引入百度地圖oc到標頭檔案

由於最近開發一個專案,需要用到百度地圖API,於是使用pod添加了百度地圖的庫,podfile如下: # Uncomment the next line to define a global platform for your project # platform :ios, '11

glib標頭檔案著 glib.h/glibconfig.h: no such file or directory

glib-2.0使用pkg-configMakefile加上CFLAGS  += `pkg-config --cflags glib-2.0`LDFLAGS += `pkg-config --libs glib-2.0`

Android 開發中使用getAssets獲取檔案的問題

assets和res ,java 是在同一層目錄此外還有該目錄下放置的原生資原始檔      因為系統在編譯的時候不會編譯assets下的資原始檔,所以我們不能通過R.XXX.ID的方式訪問它們。那我麼能不能通過該資源的絕對路徑去訪問它們呢?因為apk安裝之後會放在/data

android studio R檔案

[size=medium][color=gray] 最近在參加一個比賽,比賽要求需要開發一個Android專案。開發就開發吧,前兩天寫的程式碼好好的,執行也非常prefect,今天再新增新的內容時突然報錯R檔案找不到...[/color][/size][img]http:

library.so檔案到的問題

最近專案中遇到了要使用opencv的情況,涉及到了abi相容的選擇。因為如果全部都適配的話,包很大,這樣相容那些使用者數極少的cpu就很不划算,所以我只適配了armeabi-v7a這一個。但是今天在x64-v8a的模擬器上看的時候,提示我的library.so檔

android studio 建立安卓專案時 報R檔案到錯誤 可能源於佈局xml檔案包含錯誤

由於xml檔案沒有辦法在編寫時候檢查語法錯誤,所以當xml佈局檔案出錯之後,可能不會有任何報錯,但是編寫的應用在執行時候會立刻閃退。 再次啟動android studio時,會在一些相關聯的java檔案中報錯,資原始檔-R檔案找不到。如果此時編譯執行,會得到“error:

Linux環境下啟動MySQL數據出現到mysqld.sock的解決辦法!

備註 sta 就會 超級 默認目錄 sql數據庫 su - 用戶 lib 問題:   在普通用戶權限下運行:mysql -u root -p,回車之後如果會出現如下錯誤:ERROR 2002 (HY000): Can‘t connect to local MySQL ser

【微信小遊戲】(一)小遊戲開發調試--關於到app.json入口文件

com png info alt 微信開發者 遊戲 進入 http 找不到 經了解發現 小程序必須要有app.json 小遊戲必須的文件只有2個 game.js  小遊戲入口文件 game.json  小遊戲配置文件 所以不是工程文件缺失,解決方案如下: 進入微信開發者工具

Cannot resolve symbol KeyEventCompat(android.support.v4.view.KeyEventCompat到)

blog forward CA res tco sdn hand andro exe Cannot resolve symbol KeyEventCompat(android.support.v4.view.KeyEventCompat找不到) 解決方案 KeyEventC

Androidso缺失--UnsatisfiedLinkError

第一次引入多個so庫,果斷報了UnsatisfiedLinkError錯誤 先引入的DMD(牆外的一個全景拍照sdk)的so庫 長這樣: 只支援兩個平臺:armeabi和armeabi-v7a,除錯正常。 然後引入百度地圖so庫 長這樣:

sudo一個*.sh檔案到命令;終端啟動軟體終端能關閉

軟體目錄已經加入環境變數中. 在我的Ubuntu18下想要執行一個軟體的.sh啟動命令,於是就sudo xxx.sh卻提示找不到命令. 這是由於Ubuntu的安全機制導致的,個人的比較好的解決辦法是: 1,建立xxx.sh檔案的一個軟連線,最好是軟連線,加上-s引數 例如: sudo

php程式設計中require和include多層巢狀導致檔案到的錯誤

php中include和require可以包含其他檔案 但常引入的是一個相對路徑 如此會產生一個檔案,如下: 例如: (網站根目錄) ├資料夾A │ │ │ └1.php ├資料夾B │ │