真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

android.arm,androidarmprotect

Android 的ARM架構(gòu)和X86架構(gòu)

Android開(kāi)發(fā)中,在打包發(fā)布應(yīng)用時(shí)會(huì)選擇應(yīng)用適配的cpu架構(gòu)平臺(tái),在引用第三方庫(kù)時(shí)也遇到根據(jù)不同cpu架構(gòu)引入相應(yīng)的so包。Android主要包括一下cpu架構(gòu):

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到江津網(wǎng)站設(shè)計(jì)與江津網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋江津地區(qū)。

在Android系統(tǒng)上,每一個(gè)CPU架構(gòu)對(duì)應(yīng)一個(gè)ABI:

ABI是Application Binary Interface的縮寫(xiě),常表示兩個(gè)程序模塊之間的接口,且其中一個(gè)模塊常為機(jī)器碼級(jí)別的library或操作系統(tǒng)。它定義了函數(shù)庫(kù)的調(diào)用、應(yīng)用的二進(jìn)制文件(尤其是.so)如何運(yùn)行在相應(yīng)的系統(tǒng)平臺(tái)上等細(xì)節(jié)。其中mips及mips64極少用于手機(jī),出發(fā)點(diǎn)是高性能,主要用于路由器、貓。

從CPU發(fā)明到現(xiàn)在,有非常多種架構(gòu),從我們熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它們之間的差距都非常大。但是如果從最基本的邏輯角度來(lái)分類的話,它們可以被分為兩大類,即所謂的“復(fù)雜指令集(CISC)”與“精簡(jiǎn)指令集(RISC)”系統(tǒng)。

Intel和ARM處理器的第一個(gè)區(qū)別是,前者使用復(fù)雜指令集(CISC),后者使用精簡(jiǎn)指令集(RISC)。屬于這兩種類中的各種架構(gòu)之間最大的區(qū)別,在于它們的設(shè)計(jì)者考慮問(wèn)題方式的不同。

ARM架構(gòu)是一個(gè)32位精簡(jiǎn)指令集RISC(Reduced Instruction Set Computing)處理器架構(gòu),其廣泛地使用在許多嵌入式系統(tǒng)設(shè)計(jì)。但在其他領(lǐng)域上也有很多作為,由于節(jié)能的特點(diǎn),ARM處理器非常適用于移動(dòng)通信領(lǐng)域,匹配其主要設(shè)計(jì)目標(biāo)為低成本、高性能、低耗電的特性。

ARM的優(yōu)勢(shì)不在于性能強(qiáng)大而在于效率,ARM采用RISC流水線指令集,在完成綜合性工作方面根本就處于劣勢(shì),而在一些任務(wù)相對(duì)固定的應(yīng)用場(chǎng)合其優(yōu)勢(shì)就能發(fā)揮得淋漓盡致。ARM結(jié)構(gòu)的電腦是通過(guò)專用的數(shù)據(jù)接口使CPU與數(shù)據(jù)存儲(chǔ)設(shè)備進(jìn)行連接,所以ARM的存儲(chǔ)、內(nèi)存等性能擴(kuò)展難以進(jìn)行(一般在產(chǎn)品設(shè)計(jì)時(shí)已經(jīng)定好其內(nèi)存及數(shù)據(jù)存儲(chǔ)的容量),所以采用ARM結(jié)構(gòu)的系統(tǒng),一般不考慮擴(kuò)展。基本奉行“夠用就好”的原則。

x86 架構(gòu)是一個(gè)復(fù)雜指令集CISC(Complex Instruction Set Computer)處理器架構(gòu)。X86結(jié)構(gòu)的電腦無(wú)論如何都比ARM結(jié)構(gòu)的系統(tǒng)在性能方面要快得多、強(qiáng)得多。X86的CPU隨便就是1G以上、雙核、四核。X86結(jié)構(gòu)的電腦采用“橋”的方式與擴(kuò)展設(shè)備(如:硬盤、內(nèi)存等)進(jìn)行連接,而且x86結(jié)構(gòu)的電腦出現(xiàn)了近30年,其配套擴(kuò)展的設(shè)備種類多、價(jià)格也比較便宜,所以x86結(jié)構(gòu)的電腦能很容易進(jìn)行性能擴(kuò)展,如增加內(nèi)存、硬盤等。

說(shuō)說(shuō)Android項(xiàng)目中的armeabi,armeabi-v7a和x86

? ?這三者都表示的是CPU類型,早期的Android系統(tǒng)幾乎只支持ARMv5的CPU架構(gòu),但是現(xiàn)在已經(jīng)有7種了。ARMv5,ARMv7 (從2010年起),x86 (從2011年起),MIPS (從2012年起),ARMv8,MIPS64和x86_64 (從2014年起),每一種都關(guān)聯(lián)著一個(gè)相應(yīng)的ABI(應(yīng)用程序二進(jìn)制接口(ApplicationBinary Interface)定義了二進(jìn)制文件(尤其是.so文件)如何運(yùn)行在相應(yīng)的系統(tǒng)平臺(tái)上,從使用的指令集,內(nèi)存對(duì)齊到可用的系統(tǒng)函數(shù)庫(kù))。Android現(xiàn)在的主流CPU是armeabi-v7a。armeabi-v7a是針對(duì)有浮點(diǎn)運(yùn)算或高級(jí)擴(kuò)展功能的ARMv7 CPU。

? ?當(dāng)一個(gè)應(yīng)用安裝在設(shè)備上,只有該設(shè)備支持的CPU架構(gòu)對(duì)應(yīng)的.so文件會(huì)被安裝。不同CPU架構(gòu)的Android手機(jī)加載時(shí)會(huì)在libs下找自己對(duì)應(yīng)的目錄,從對(duì)應(yīng)的目錄下尋找需要的.so文件;如果沒(méi)有對(duì)應(yīng)的目錄,就會(huì)去armeabi下去尋找,如果已經(jīng)有對(duì)應(yīng)的目錄,但是如果沒(méi)有找到對(duì)應(yīng)的.so文件,也不會(huì)去armeabi下去尋找了。

? ?以x86設(shè)備為例,x86設(shè)備會(huì)在項(xiàng)目中的 libs文件夾尋找是否含有x86文件夾,如果含有x86文件夾,則默認(rèn)為該項(xiàng)目有x86對(duì)應(yīng)的so可運(yùn)行文件,只有x86文件夾而文件夾下沒(méi)有so,程序運(yùn)行也是會(huì)出現(xiàn)findlibrary returned null的錯(cuò)誤的;如果工程本身不含有x86文件夾,則會(huì)尋找armeabi或者armeabi-v7a文件夾,兼容運(yùn)行。以armeabi-v7a設(shè)備為例,該Android設(shè)備當(dāng)然優(yōu)先尋找libs目錄下的armeabi-v7a文件夾,同樣,如果只有armeabi-v7a文件夾而沒(méi)有 so也是會(huì)報(bào)錯(cuò)的;如果找不到armeabi-v7a文件夾,則尋找armeabi文件夾,兼容運(yùn)行該文件夾下的so,但是不能兼容運(yùn)行x86的so。所以項(xiàng)目中如果只含有x86的so,在armeabi和armeabi-v7a也是無(wú)法運(yùn)行的。以上就是不同CPU架構(gòu)運(yùn)行時(shí)加載so的策略。

? ?目前主流的Android設(shè)備是armeabi-v7a架構(gòu)的,然后就是x86和armeabi了。如果同時(shí)包含了 armeabi,armeabi-v7a和x86,所有設(shè)備都可以運(yùn)行,程序在運(yùn)行的時(shí)候去加載不同平臺(tái)對(duì)應(yīng)的so,這是較為完美的一種解決方案,但是同時(shí)也會(huì)導(dǎo)致包變大。

? ?armeabi-v7a是可以兼容armeabi的,而v7a的CPU支持硬件浮點(diǎn)運(yùn)算,目前絕大對(duì)數(shù)設(shè)備已經(jīng)是armeabi-v7a了,所以為了性能上的更優(yōu),就不要為了兼容放到armeabi下了。x86也是可以兼容armeabi平臺(tái)運(yùn)行的,另外需要指出的是,打出包的x86的so,總會(huì)比armeabi平臺(tái)的體積更小,對(duì)于性能有潔癖的童鞋們,還是建議在打包so的時(shí)候支持x86。

? ?第三方的類庫(kù)只提供了armeabi下的.so文件,我們項(xiàng)目里適配了armeabi-v7a和x86,如果不在對(duì)應(yīng)的文件下放對(duì)應(yīng)的.so文件,就可能導(dǎo)致某些Android設(shè)備會(huì)出一些問(wèn)題,我們可以復(fù)制armeabi下得.so文件到不同的文件夾下。如果第三方提供了不同平臺(tái)的.so文件,則復(fù)制不同平臺(tái)的.so文件到項(xiàng)目中對(duì)應(yīng)的文件夾下即可。

? ?關(guān)于.so文件之前有一個(gè)坑,svn會(huì)把提交的so文件過(guò)濾掉,在接第三方SDK的時(shí)候通過(guò)SVN更新了文檔,但是沒(méi)有注意到少了幾個(gè)so文件,浪費(fèi)了大把的時(shí)間去找原因。記得去掉svn對(duì)so的忽略?。?!

Android中的armeabi、armeabi-v7a、arm64-v8a及x86的詳解

一. lib和libs

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

放在libs中的文件會(huì)自動(dòng)被編輯器所include。所以不要把API放到libs里去。

lib的內(nèi)容是不會(huì)被打包到APK中,libs中的內(nèi)容是會(huì)被打包進(jìn)APK中

二. .so庫(kù)

NDK編譯出來(lái)的動(dòng)態(tài)鏈接庫(kù)。

一些重要的加密算法或者核心協(xié)議一般都用c寫(xiě)然后給java調(diào)用。這樣可以避免反編譯后查看到應(yīng)用的源碼。

三. .so庫(kù)該如何存放

放置 .so 文件的正確姿勢(shì)其實(shí)就兩句話:

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

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

存放so的規(guī)則:

你應(yīng)該盡可能的提供專為每個(gè)ABI優(yōu)化過(guò)的.so文件,但要么全部支持,要么都不支持:你不應(yīng)該混合著使用。你應(yīng)該為每個(gè)ABI目錄提供對(duì)應(yīng)的.so文件。

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

存放.so庫(kù),主要針對(duì)不同的設(shè)備兼容,也可以說(shuō)是專門針對(duì)不同Android手機(jī)下CPU架構(gòu)的兼容。

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

早期的Android系統(tǒng)幾乎只支持ARMv5的CPU架構(gòu),后面發(fā)展到支持七種不同的CPU架構(gòu):ARMv5,ARMv7 (從2010年起),x86 (從2011年起),MIPS (從2012年起),ARMv8,MIPS64和x86_64 (從2014年起),每一種都關(guān)聯(lián)著一個(gè)相應(yīng)的ABI。

應(yīng)用程序二進(jìn)制接口(Application Binary Interface)定義了二進(jìn)制文件(尤其是.so文件)如何運(yùn)行在相應(yīng)的系統(tǒng)平臺(tái)上,從使用的指令集,內(nèi)存對(duì)齊到可用的系統(tǒng)函數(shù)庫(kù)。在Android 系統(tǒng)上,每一個(gè)CPU架構(gòu)對(duì)應(yīng)一個(gè)ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。

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

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

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

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

x86_64: 64位的平板。

如果項(xiàng)目只包含了 armeabi,那么在所有Android設(shè)備都可以運(yùn)行;

如果項(xiàng)目只包含了 armeabi-v7a,除armeabi架構(gòu)的設(shè)備外都可以運(yùn)行;

如果項(xiàng)目只包含了 x86,那么armeabi架構(gòu)和armeabi-v7a的Android設(shè)備是無(wú)法運(yùn)行的; 如果同時(shí)包含了 armeabi, armeabi-v7a和x86,所有設(shè)備都可以運(yùn)行,程序在運(yùn)行的時(shí)候去加載不同平臺(tái)對(duì)應(yīng)的so,這是較為完美的一種解決方案,同時(shí)也會(huì)導(dǎo)致包變大。

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

因?yàn)槟J(rèn)情況下,打包后會(huì)自動(dòng)生成armeabi 到 x86的所有文件夾。這就有可能導(dǎo)致一些x86的設(shè)備因?yàn)樵趚86文件夾下找不到so文件而崩潰。

ARM系統(tǒng)和 android X86 有什么區(qū)別嗎

一、兩者的概述不同:

1、ARM系統(tǒng)的概述:ARM處理器是英國(guó)Acorn有限公司設(shè)計(jì)的低功耗成本的第一款RISC微處理器。全稱為Advanced RISC Machine。ARM處理器本身是32位設(shè)計(jì),但也配備16位指令集,一般來(lái)講比等價(jià)32位代碼節(jié)省達(dá)35%,卻能保留32位系統(tǒng)的所有優(yōu)勢(shì)。

2、android X86的概述:Android x86 即運(yùn)行于 x86 PC上的Android操作系統(tǒng),目前已經(jīng)支持大部分安卓程序。Android X86平臺(tái)是由Beyounn和Cwhuang主持設(shè)計(jì)的。

二、兩者的作用不同:

1、ARM系統(tǒng)的作用:ARM的Jazelle技術(shù)使Java加速得到比基于軟件的Java虛擬機(jī)(JVM)高得多的性能,和同等的非Java加速核相比功耗降低80%。

2、android X86的作用:項(xiàng)目的主要目的在于為X86平臺(tái)提供一套完整的Android 系統(tǒng)解決方案。這個(gè)項(xiàng)目提供了一套完整的可行源代碼樹(shù),配套文檔以及Live CD與Live USB。

三、兩者的特點(diǎn)不同:

1、ARM系統(tǒng)的特點(diǎn):耗電少,功能強(qiáng);16位/32位雙指令集;合作伙伴眾多。

2、android X86的特點(diǎn):具有更完善的安裝程序和多重啟動(dòng)系統(tǒng);支持鼠標(biāo)及部分鍵盤;支持待機(jī)功能;支持部分觸摸屏;支持壓縮檔案格式。

參考資料來(lái)源:百度百科-ARM(ARM處理器)

參考資料來(lái)源:百度百科-android x86

如何查看Android手機(jī)CPU類型是armeabi,armeabi-v7a,還是arm64-v8

1.armeabiv-v7a: 第7代及以上的 ARM 處理器.

2.arm64-v8a: 第8代、64位ARM處理器,現(xiàn)在很多手機(jī)使用X86的手機(jī).紅米11.三星 Galaxy S6是其中之一。

3.armeabi: 第5代、第6代的ARM處理器,早期的手機(jī)用的比較多。

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

使用命令:adb shell getprop ro.product.cpu.abi

查看Android設(shè)備的CPU架構(gòu)信息,可以使用命令來(lái)完成:

1、adb shell

2、cat /proc/cpuinfo

解析說(shuō)明:

processor: 0/1 表示第幾個(gè)核。

BogoMIPS:偽MIPS,用于測(cè)量CPU速度

Features:表示當(dāng)前CPU所支持的特性,比如neon,vfp等。

CPU architecture:7表示arm-v7,8表示arm-v8

Android,ARM,Linux之間有什么聯(lián)系?

android是google大神推出的新操作系統(tǒng)

arm是一種精簡(jiǎn)指令集的cpu,對(duì)立于傳統(tǒng)的復(fù)雜指令集cpu,如X86架構(gòu)的

linux也是一種操作系統(tǒng),嵌入式與服務(wù)器上占據(jù)絕對(duì)優(yōu)勢(shì),與windows二分天下

關(guān)系就是 android和linux都可以在arm上運(yùn)行


網(wǎng)頁(yè)名稱:android.arm,androidarmprotect
URL分享:http://weahome.cn/article/hoihej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部