Android 關(guān)于so文件的隨記

1.背景:

項目中要集成商湯的活體檢測sdk,

2.遇到的問題:

商湯提供的demo 可以正常運行,但是將sdk集成至項目中時一直報錯,但是商湯側(cè)卻沒辦法提供具體的報錯原因

3.解決問題:

反編譯商湯的源碼發(fā)現(xiàn),報錯的原因是so文件導(dǎo)致


商湯反編譯的源碼.jpg

商湯反編譯的源碼.png

解壓商湯的sdk發(fā)現(xiàn),sdk中只存在armeabi-v7a和armeabi-v8a兩個適配文件夾,而項目需要適配armeabi,所以,按照商湯的faq,將v7a中的so文件,拷貝至項目中的armeabi即可解決問題,另外,商湯不支持x86的cpu
4.so文件加載邏輯

arm64-v8a是可以向下兼容的,但前提是你的項目里面沒有arm64-v8a的文件夾,如果你有兩個文件夾armeabi和arm64-v8a,兩個文件夾,armeabi里面有a.so 和 b.so,arm64-v8a里面只有a.so,那么arm64-v8a的手機在用到b的時候發(fā)現(xiàn)有arm64-v8a的文件夾,發(fā)現(xiàn)里面沒有b.so,就報錯了,所以這個時候刪掉arm64-v8a文件夾,這個時候手機發(fā)現(xiàn)沒有適配arm64-v8a,就會直接去找armeabi的so庫,所以要么你別加arm64-v8a,要么armeabi里面有的so庫,arm64-v8a里面也必須有

5.另記一個問題

如果so文件,或者包含so文件的aar被重復(fù)引用的話,可能報以下錯誤

More than one file was found with OS independent path 'lib/arm64-v8a/libIndoorMapSDK2.2.5.so'

6.查看手機cpu信息

adb shell
cat /proc/cpuinfo

結(jié)果信息

Processor   : AArch64 Processor rev 4 (aarch64)
processor   : 0
BogoMIPS    : 38.40
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part    : 0xd03
CPU revision    : 4

AArch64是ARMv8 架構(gòu)的一種執(zhí)行狀態(tài)。

7.參考鏈接
https://blog.csdn.net/qq_32452623/article/details/71076023
https://www.cnblogs.com/janehlp/p/7473240.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容