国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android中arm64-v8a、armeabi-v7a、armeabi是什么?

這篇具有很好參考價(jià)值的文章主要介紹了Android中arm64-v8a、armeabi-v7a、armeabi是什么?。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

首先:ARM是神馬?
答:ARM是我們設(shè)備的CPU架構(gòu)。

其次:arm64-v8a、armeabi-v7a、armeabi是神馬?
答:在Android 系統(tǒng)上,每一個(gè)CPU架構(gòu)對應(yīng)一個(gè)ABI。他們就是我們的ABI類型
Android中arm64-v8a、armeabi-v7a、armeabi是什么?
最后:ABI是神馬?
答:應(yīng)用程序二進(jìn)制接口(Application Binary Interface)定義了二進(jìn)制文件(尤其是.so文件)如何運(yùn)行在相應(yīng)的系統(tǒng)平臺(tái)上,從使用的指令集,內(nèi)存對齊到可用的系統(tǒng)函數(shù)庫。

補(bǔ)充:查詢手機(jī)cpu命令行
答: adb shell getprop ro.product.cpu.abi
Android中arm64-v8a、armeabi-v7a、armeabi是什么?

正題

armeabi-v7a: ARM v7架構(gòu)之前的主流版本,現(xiàn)在也很多。
arm64-v8a: 64位支持,目前主流的版本。

ABI是如何工作的

一個(gè)Android設(shè)備可以支持多種ABI,設(shè)備主ABI和輔助ABI。
以arm64-v8a為主ABI的設(shè)備,輔助ABI為armeabi-v7a和armeabi。
以armeabi-v7a為主ABI的設(shè)備,輔助ABI為armeabi。

ABI具體適配流程

對于一個(gè)cpu是arm64-v8a架構(gòu)的手機(jī),它運(yùn)行app時(shí),進(jìn)入jnilibs去讀取庫文件時(shí),先看有沒有arm64-v8a文件夾,如果沒有該文件夾,去找armeabi-v7a文件夾,如果沒有,再去找armeabi文件夾,如果連這個(gè)文件夾也沒有,就拋出異常。
如果有arm64-v8a文件夾,那么就去找特定名稱的.so文件,注意:如果沒有找到想要的.so文件,不會(huì)再往下(armeabi-v7a文件夾)找了,而是直接拋出異常。

項(xiàng)目中該如何適配

問題:只適配了armeabi-v7a,那如果APP裝在其他架構(gòu)的手機(jī)上,如arm64-v8a上,會(huì)蹦嗎?
答: 不會(huì),但是反過來會(huì)。 因?yàn)閍rmeabi-v7a和arm64-v8a會(huì)向下兼容:

只適配armeabi的APP可以跑在armeabi,x86,x86_64,armeabi-v7a,arm64-v8上
只適配armeabi-v7a可以運(yùn)行在armeabi-v7a和arm64-v8a
只適配arm64-v8a 可以運(yùn)行在arm64-v8a上

適配方案有哪些?
1、只適配armeabi 優(yōu)點(diǎn):基本上適配了全部CPU架構(gòu)(除了淘汰的mips和mips_64) 缺點(diǎn):性能低,相當(dāng)于在絕大多數(shù)手機(jī)上都是需要輔助ABI或動(dòng)態(tài)轉(zhuǎn)碼來兼容。
2、只適配 armeabi-v7a 同理方案一,只是又篩掉了一部分老舊設(shè)備,在性能和兼容二者中比較平衡。
3、只適配 arm64-v8 優(yōu)點(diǎn): 性能最佳 缺點(diǎn): 只能運(yùn)行在arm64-v8上,要放棄部分老舊設(shè)備用戶。

這三種方案都是可以的,現(xiàn)在的大廠APP適配中,這三種都有,大部分是前2種方案。具體選哪一種就看自己的考量了,以性能換兼容就arm64-v8,以兼容換性能armeabi,二者稍微平衡一點(diǎn)的就armeabi-v7a。

打包配置

split分包

這個(gè)命令可以按照各種規(guī)則去分包,比如按照abi,屏幕密度(即ldpi,hdpi等)分包。

splits { 
   
        abi { 
   
            enable true
            reset()
            include 'x86','armabi'
            exclude 'armeabi', 'armeabi-v7a', "arm64-v8a"
            universalApk true
        }
    }

ndk{abiFilters:}過濾

這個(gè)指令可以配置只打包你配置的so庫,沒有配置的就不打包,很靈活。 第三方aar文件,如果這個(gè)sdk對abi的支持比較全,可能會(huì)包含armeabi、armeabi-v7a、x86、arm64-v8a、x86_64五種abi,而你應(yīng)用的其它so只支持armeabi、armeabi-v7a、x86三種,直接引用sdk的aar,會(huì)自動(dòng)編譯出支持5種abi的包。但是應(yīng)用的其它so缺少對其它兩種abi的支持,那么如果應(yīng)用運(yùn)行于arm64-v8a、x86_64為首選abi的設(shè)備上時(shí),就會(huì)crash了,所以我們需要在我們的app中配置 abiFilter 配置,來避免一些未知的錯(cuò)誤

//過濾x86的so庫
ndk { 
   
    abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
}

這樣配置會(huì)將armeabi,armeabi-v71,arm64-v8a這3個(gè)包下的so庫都打包到一個(gè)apk,而不像splits會(huì)每一個(gè)包打一個(gè)apk.文章來源地址http://www.zghlxwxcb.cn/news/detail-473570.html

到了這里,關(guān)于Android中arm64-v8a、armeabi-v7a、armeabi是什么?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • autox.js的三個(gè)版本universal、armeabi-v7a、arm64-v8a的區(qū)別

    universal : 通用版(不在乎安裝包大小/懶得選就用這個(gè)版本,包含以下2種CPU架構(gòu)so) armeabi-v7a : 32位ARM設(shè)備(備用機(jī)首選) arm64-v8a : 64位ARM設(shè)備(主流旗艦機(jī)) ABI 在Android 系統(tǒng)上,每個(gè)不同的CPU支持不同的指令集,CPU與指令集的組合都有對應(yīng)的二進(jìn)制接口,即ABI armeabi 是第5、

    2024年02月05日
    瀏覽(26)
  • 2 files found with path ‘lib/arm64-v8a/xxx.so‘ 問題解決

    目錄 2 files found with path ‘lib/arm64-v8a/xxx.so‘ 問題 2 files found with path \\\'META-INF/DEPENDENCIES\\\' from inputs:報(bào)錯(cuò) 解決方法: 在報(bào)該編譯錯(cuò)誤的module的build.gradle中加入如下配置項(xiàng),排除掉中間生成的lib/arm64-v8a/xxx.so 解決辦法 在報(bào)該編譯錯(cuò)誤的module的build.gradle中加入如下配置項(xiàng),排除掉中

    2024年02月11日
    瀏覽(55)
  • linux NDK交叉編譯rtmp 與 ffmpeg+rtmp交叉編譯(v7a,v8a) 完成流程

    linux NDK交叉編譯rtmp 與 ffmpeg+rtmp交叉編譯(v7a,v8a) 完成流程

    最近在學(xué)RTMP,記錄一下完成的編譯流程 我是mac 電腦,但是mac上編譯一直通過不了,后來才換到服務(wù)器上編譯, 其實(shí)mac也能編譯,只是最開始踩到坑里面了… 這里記錄一下linux編譯完整流程 環(huán)境: NDK: android-ndk-r17c Ffmpeg: ffmpeg4.2.2 (高版本也可以編譯) system: mac 首先下載 rtmp https://gith

    2024年02月15日
    瀏覽(24)
  • Android強(qiáng)行進(jìn)階:為何大廠APP如微信、支付寶、淘寶、手Q等只適配了armeabi-v7a-armeabi?,看這一篇就夠了

    Android強(qiáng)行進(jìn)階:為何大廠APP如微信、支付寶、淘寶、手Q等只適配了armeabi-v7a-armeabi?,看這一篇就夠了

    // 適配指定CPU架構(gòu) ndk { abiFilters ‘a(chǎn)rm64-v8a’, ‘x86_64’ } } } 效果如下: 可以看到,只生成了我們指定CPU架構(gòu)的so文件,包的大小也減少了 5.3MB 。 這時(shí)候,你可能會(huì)有一個(gè)疑問,Android 共支持7種CPU架構(gòu),那么,我們在實(shí)際項(xiàng)目中該適配哪些CPU架構(gòu)能保證最好的兼容,同時(shí)又最

    2024年04月17日
    瀏覽(30)
  • 2 files found with path ‘lib/armeabi-v7a/liblog.so‘ from inputs:

    2 files found with path ‘lib/armeabi-v7a/liblog.so‘ from inputs:

    下圖兩個(gè)子模塊都用CMakeLists.txt引用了android的log庫,編譯后,在它們的build目錄下都有l(wèi)iblog.so的文件。 四個(gè)CPU架構(gòu)的文件夾下都有。 上層模塊app不能決定使用哪一個(gè),因此似乎做了合并,路徑就是報(bào)錯(cuò)里的哪個(gè)路徑,須在app模塊下的build.gradle文件指明使用該路徑下的liblog.s

    2024年02月07日
    瀏覽(27)
  • 在amd64平臺(tái)構(gòu)建適用于linux/arm64/v8平臺(tái)的Docker鏡像

    該鏡像內(nèi)置了Redis、MySQL、Nginx、JDK11功能 Docker 提供了一種名為 Buildx 的功能,它允許在不同的平臺(tái)上進(jìn)行多架構(gòu)構(gòu)建。我們可以使用 Buildx 在 amd64 平臺(tái)上構(gòu)建適用于 linux/arm64/v8 平臺(tái)的 Docker 鏡像。 請按照以下步驟進(jìn)行操作: 確保您的 Docker 安裝中已啟用 Buildx。您可以運(yùn)行以

    2024年02月17日
    瀏覽(18)
  • manifest for docker.io/arm64v8/elasticsearch:latest not found問題處理

    manifest for docker.io/arm64v8/elasticsearch:latest not found問題處理

    使用docker安裝elasticsearch的時(shí)候可能會(huì)碰到這樣的問題: manifest for docker.io/arm64v8/elasticsearch:latest not found 在安裝arm64的elasticsearch時(shí),docker安裝會(huì)報(bào)錯(cuò),無法繼續(xù)進(jìn)行,意思就是在docker找不到最新版本的服務(wù),這個(gè)時(shí)候要注意,在docker hub官網(wǎng)上面有關(guān)于elasticsearch的版本號,如果

    2024年02月11日
    瀏覽(20)
  • The requested image‘s platform (linux/arm64/v8) does not match the detected host platform (linux/amd

    這一段完整的報(bào)錯(cuò)是: The requested image’s platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested 翻譯過來就是說:請求的映像的平臺(tái)(linux/arm64/v8)與檢測到的主機(jī)平臺(tái)(linux/amd64)不匹配,未請求特定平臺(tái)。 背景: 這段報(bào)錯(cuò)是發(fā)生在內(nèi)

    2024年02月01日
    瀏覽(31)
  • 注意避坑:centos7官方版鏡像不支持arm架構(gòu)(docker請求的映像的平臺(tái)(linux/aamd64)與檢測到的主機(jī)平臺(tái)(linux/alm64/v8)不匹配)fauria/vsftpd

    注意避坑:centos7官方版鏡像不支持arm架構(gòu)(docker請求的映像的平臺(tái)(linux/aamd64)與檢測到的主機(jī)平臺(tái)(linux/alm64/v8)不匹配)fauria/vsftpd

    注意是centos7 docker官方版鏡像不支持arm架構(gòu)(FROM centos:7),不是centos7不支持arm 今天基于fauria/vsftpd在我們的arm盒子上做了個(gè)docker鏡像,但是用鏡像run容器的時(shí)候提示: 翻譯就是: 警告:請求的映像的平臺(tái)(linux/aamd64)與檢測到的主機(jī)平臺(tái)(linux/alm64/v8)不匹配,并且沒有請求

    2024年02月08日
    瀏覽(25)
  • 安裝包 amd,amd64, arm,arm64 都有什么區(qū)別

    安裝包 amd,amd64, arm,arm64 都有什么區(qū)別

    現(xiàn)在的安裝包也不省心,有各種版本都不知道怎么選。 根據(jù)你安裝的環(huán)境配置。 amd: 32位X86 amd64: 64位X86 arm: 32位ARM arm64: 64位ARM amd64是X86架構(gòu)的CPU,64位版。amd64又叫X86_64。主流的桌面PC,筆記本電腦,服務(wù)器(包括虛擬機(jī))都在用X86_64的CPU。 arm64是ARM架構(gòu)的CPU,64位版。

    2024年02月05日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包