一.Android 設備的CPU類型
armeabiv-v7a: 第7代及以上的 ARM 處理器野崇。2011年15月以后的生產(chǎn)的大部分Android設備都使用它.
arm64-v8a: 第8代胖烛、64位ARM處理器族跛,當前主力設備都支持穩(wěn)定性更好徙缴,三星 Galaxy惫企、vivo疙咸、oppo等高端機型都支持,主要看cpu媳友。
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秕铛;
二.Android設備如何加載.so文件
以arm64-v8a設備為例,該Android設備優(yōu)先尋找libs目錄下的arm64-v8a文件夾缩挑。如果有文件夾但两,但是沒有so庫,則會報錯供置。如果沒有arm64-v8a文件夾谨湘,則會去找armeabi-v7a文件夾。如果找不到armeabi-v7a文件夾,則尋找armeabi文件夾紧阔,兼容運行該文件夾下的so坊罢。
三.實際操作
由上兼容性可以看到不同設備基本都是可以兼容armeabi的so庫,只是效率擅耽,性能上有問題活孩。
反編譯微信,里面只有armeabi這個文件夾秫筏,應該是在這個目錄下放置其他架構的SO文件诱鞠,再通過代碼實現(xiàn)選擇加載哪一個架構的SO文件。
使用armeabi的手機已經(jīng)很少了这敬,幾乎忽略不計了航夺。
為了減小 apk 體積,只保留 armeabi 和 armeabi-v7a 兩個文件夾崔涂,并保證這兩個文件夾中 .so 數(shù)量一致
對只提供 armeabi 版本的第三方 .so阳掐,原樣復制一份到 armeabi-v7a 文件夾