关于android中的armeabi、armeabi-v7a、arm64-v8a及x86等用splits用指定打包
Android 設備的CPU類型(通常稱為”ABIs”)
armeabi-v7a: 第7代及以上的 ARM 處理器。2011年以后生產的大部分Android設備都使用它.
 arm64-v8a: 第8代、64位ARM處理器,很少設備,三星 Galaxy S6是其中之一。
 armeabi: 第5代、第6代的ARM處理器,早期的手機用的比較多。
 x86: 平板、模擬器用得比較多。
 x86_64: 64位的平板。
1.armeabi:默認選項,將創建以基于
ARM* v5TE 的設備為目標的庫。 具有這種目標的浮點運算使用軟件浮點運算。 使用此 ABI (二進制接口)
創建的二進制代碼將可以在所有 ARM*
 設備上運行。所以armeabi通用性很強。但是速度慢
2.armeabi-v7a:創建支持基于
ARM* v7 的設備的庫,并將使用硬件 FPU 指令。armeabi-v7a是針對有浮點運算或高級擴展功能的arm v7 cpu。
3.x86:支持基于硬件的浮點運算的
IA-32 指令集。x86是可以兼容armeabi平臺運行的,無論是armeabi-v7a還是armeabi,同時帶來的也是性能上的損耗,
另外需要指出的是,打包出的x86的so,總會比armeabi平臺的體積更小。
總結
如果項目只包含了 armeabi,那么在所有Android設備都可以運行;
 如果項目只包含了 armeabi-v7a,除armeabi架構的設備外都可以運行;
如果項目只包含了 x86,那么armeabi架構和armeabi-v7a的Android設備是無法運行的; 如果同時包含了 armeabi, armeabi-v7a和x86,所有設備都可以運行,程序在運行的時候去加載不同平臺對應的so,這是較為完美的一種解決方案,同時也會導致包變大。
最后,如果我們只想支持armeabi-v7a,那么需要在gradle中配置
? ? defaultConfig {ndk {abiFilters "armeabi-v7a"}}? ? 或
? ? ? ? ndk { ? ? ? ? ? ? abiFilters "armeabi","arm64-v8a", /*"armeabi-v7a",*/ "x86", "mips" ? ? ? ? }?
?
因為默認情況下,打包后會自動生成armeabi 到 x86的所有文件夾。這就有可能導致一些x86的設備因為在x86文件夾下找不到so文件而崩潰。
?
拆分打包 ,詳情?https://blog.csdn.net/weixin_37625173/article/details/103284575
? ? ? ? splits { ? ? ? ? ? ? abi { ? ? ? ? ? ? ? ? enable true ? ? ? ? ? ? ? ? reset() ? ? ? ? ? ? ? ? include 'x86', 'armeabi-v7a', 'x86_64' ? ? ? ? ? ? ? ? universalApk true ? ? ? ? ? ? } ? ? ? ? }總結
以上是生活随笔為你收集整理的关于android中的armeabi、armeabi-v7a、arm64-v8a及x86等用splits用指定打包的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: OpenGL于MFC使用汇总(三)——离
- 下一篇: Qt 5.14.1 最新版下载
