日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

java armeabi_Android中的armeabi、armeabi-v7a、arm64-v8a及x86的详解

發布時間:2023/12/20 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java armeabi_Android中的armeabi、armeabi-v7a、arm64-v8a及x86的详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

預備知識

一. lib和libs

放在lib中的是被reference的,放在libs中的是被include的。

放在libs中的文件會自動被編輯器所include。所以不要把API放到libs里去。

lib的內容是不會被打包到APK中,libs中的內容是會被打包進APK中

二. .so庫

NDK編譯出來的動態鏈接庫。

一些重要的加密算法或者核心協議一般都用c寫然后給java調用。這樣可以避免反編譯后查看到應用的源碼。

三. .so庫該如何存放

放置 .so 文件的正確姿勢其實就兩句話:

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

? 對只提供 armeabi 版本的第三方 .so,原樣復制一份到 armeabi-v7a 文件夾

存放so的規則:

你應該盡可能的提供專為每個ABI優化過的.so文件,但要么全部支持,要么都不支持:你不應該混合著使用。你應該為每個ABI目錄提供對應的.so文件。

四. libs下armeabi等的作用是什么

存放.so庫,主要針對不同的設備兼容,也可以說是專門針對不同Android手機下CPU架構的兼容。

Android 設備的CPU類型(通常稱為”ABIs”)

架構介紹

早期的Android系統幾乎只支持ARMv5的CPU架構,后面發展到支持七種不同的CPU架構:ARMv5,ARMv7 (從2010年起),x86 (從2011年起),MIPS (從2012年起),ARMv8,MIPS64和x86_64 (從2014年起),每一種都關聯著一個相應的ABI。

應用程序二進制接口(Application Binary Interface)定義了二進制文件(尤其是.so文件)如何運行在相應的系統平臺上,從使用的指令集,內存對齊到可用的系統函數庫。在Android 系統上,每一個CPU架構對應一個ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。

armeabi-v7a: 第7代及以上的 ARM 處理器。2011年以后生產的大部分Android設備都使用它.

arm64-v8a: 第8代、64位ARM處理器,很少設備,三星 Galaxy S6是其中之一。

armeabi: 第5代、第6代的ARM處理器,早期的手機用的比較多。

x86: 平板、模擬器用得比較多。

x86_64: 64位的平板。

總結

如果項目只包含了 armeabi,那么在所有Android設備都可以運行;

如果項目只包含了 armeabi-v7a,除armeabi架構的設備外都可以運行;

如果項目只包含了 x86,那么armeabi架構和armeabi-v7a的Android設備是無法運行的; 如果同時包含了 armeabi, armeabi-v7a和x86,所有設備都可以運行,程序在運行的時候去加載不同平臺對應的so,這是較為完美的一種解決方案,同時也會導致包變大。

最后,如果我們只想支持armeabi-v7a,那么需要在gradle中配置

defaultConfig {

ndk {

abiFilters "armeabi-v7a"

}

}

因為默認情況下,打包后會自動生成armeabi 到 x86的所有文件夾。這就有可能導致一些x86的設備因為在x86文件夾下找不到so文件而崩潰。

總結

以上是生活随笔為你收集整理的java armeabi_Android中的armeabi、armeabi-v7a、arm64-v8a及x86的详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。