【轉】android中的armeabi、armeabi-v7a、arm64-v8a及x86等

1.Android 設備的CPU類型

armeabiv-v7a: 第7代及以上的 ARM 處理器。2011年15月以後的生產的大部分Android設備都使用它.
arm64-v8a: 第8代、64位ARM處理器,很少設備,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM處理器,早期的手機用的比較多。
x86: 平板、模擬器用得比較多。
x86_64: 64位的平板
armeabi設備只兼容armeabi,不支持硬件輔助浮點運算,支持所有的 ARM* 設備;
armeabi-v7a設備兼容armeabi-v7a、armeabi;
arm64-v8a設備兼容arm64-v8a、armeabi-v7a、armeabi;
x86設備兼容x86、armeabi;
x86_64設備兼容x86_64、x86、armeabi;
mips64設備兼容mips64、mips;
mips只兼容mips;

2.Android設備如何加載.so文件

以arm64-v8a設備爲例,該Android設備優先尋找libs目錄下的arm64-v8a文件夾。如果有文件夾,但是沒有so庫,則會報錯。如果沒有arm64-v8a文件夾,則會去找armeabi-v7a文件夾。如果找不到armeabi-v7a文件夾,則尋找armeabi文件夾,兼容運行該文件夾下的so。

3.實際操作

由上兼容性可以看到不同設備基本都是可以兼容armeabi的so庫,只是效率,性能上有問題。

反編譯微信,裏面只有armeabi這個文件夾,應該是在這個目錄下放置其他架構的SO文件,再通過代碼實現選擇加載哪一個架構的SO文件。

使用armeabi的手機已經很少了,幾乎忽略不計了。

爲了減小 apk 體積,只保留 armeabi 和 armeabi-v7a 兩個文件夾,並保證這兩個文件夾中 .so 數量一致

對只提供 armeabi 版本的第三方 .so,原樣複製一份到 armeabi-v7a 文件夾
————————————————
版權聲明:本文爲CSDN博主「飛露」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u013083465/article/details/122453664

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章