Android、Flutter為不同的CPU架構(gòu)包打包APK(v7a、v8a、x86區(qū)別)
默認(rèn)情況下,Android和Flutter打包出來(lái)的Apk都是包含了所有架構(gòu)的,這樣打出來(lái)的apk體積相對(duì)于單架構(gòu)的apk有點(diǎn)大。
這時(shí),我們就需要分別打出不同的架構(gòu)包。
架構(gòu)
一般來(lái)說(shuō),x86代表32位CPU,x64(或者叫x86-64)代表64位CPU。
在Android中,支持專有cpu架構(gòu)也是Application Binary Interface(ABI)。
Android開發(fā)者官網(wǎng)文檔中支持的ABI。
armeabi-v7a
此 ABI 適用于基于 32 位 ARM 的 CPU,2016年之前大部分Android手機(jī)的cpu都是此架構(gòu)。
arm64-v8a
此 ABI 適用于基于 ARMv8-A 的 CPU,支持 64 位 AArch64 架構(gòu),一般從2016年開始,主流Android手機(jī)的cpu架構(gòu)都是arm64的。
x86
此ABI支持X86架構(gòu),像Intel、AMD的cpu都是基于此架構(gòu)。在2012-2016這段時(shí)間,為了趕上移動(dòng)互聯(lián)網(wǎng)的浪潮,Intel和Nvidia專門為Android手機(jī)和平板推出過X86架構(gòu)的CPU,可惜都失敗了?,F(xiàn)在一般不需要適配此架構(gòu),除非APK需要安裝在Intel平板上。
x86_64
此ABI支持x86-64位架構(gòu)的CPU。同上
對(duì)于
mips
、mips64
、armeabi
這些架構(gòu)來(lái)說(shuō),Android從Android Plugin for Gradle 3.1.0
(對(duì)應(yīng)gradle 4.4)后不再支持,因?yàn)閺腘DK r17開始,不再將這些 ABI 作為支持的目標(biāo)。
APK分包 Android
在模塊級(jí)的build.gradle文件中,在android代碼塊中添加splits模塊?;九渲萌缦?。
android { ... splits { // 基于不同的abi架構(gòu)配置不同的apk abi { // 必須為true,打包才會(huì)為不同的abi生成不同的apk enable true // 默認(rèn)情況下,包含了所有的ABI。 // 所以使用reset()清空所有的ABI,再使用include指定我們想要生成的架構(gòu)armeabi-v7a、arm-v8a reset() // 逗號(hào)分隔列表的形式指定 Gradle 應(yīng)針對(duì)哪些 ABI 生成 APK。只與 reset() 結(jié)合使用,以指定確切的 ABI 列表。 include "armeabi-v7a", "arm64-v8a" // 是否生成通用的apk,也就是包含所有ABI的apk。如果設(shè)為 true,那么除了按 ABI 生成的 APK 之外,Gradle 還會(huì)生成一個(gè)通用 APK。 universalApk false } }}
Flutter
使用以下命令后,會(huì)自動(dòng)生成v7a、v8a、x86-64三種架構(gòu)的apk。
flutter build apk --split-per-abi
生成位置在build/app/outputs/flutter-apk/。
到此這篇關(guān)于Android、Flutter為不同的CPU架構(gòu)包打包APK(v7a、v8a、x86)的文章就介紹到這了,更多相關(guān)Android APK(v7a、v8a、x86)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android編程之在SD卡上進(jìn)行文件讀寫操作實(shí)例詳解
這篇文章主要介紹了Android編程之在SD卡上進(jìn)行文件讀寫操作的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android的文件操作及針對(duì)SD卡的存取操作相關(guān)技巧,需要的朋友可以參考下2015-12-12談?wù)凙ndroid里的Context的使用實(shí)例
這篇文章主要介紹了談?wù)凙ndroid里的Context的使用實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-11-11android nfc常用標(biāo)簽讀取總結(jié)
NFC(Near Field Communication,近場(chǎng)通信)是一種數(shù)據(jù)傳輸技術(shù)這篇文章主要介紹了android nfc常用標(biāo)簽讀取總結(jié),有興趣的可以了解一下。2016-12-12Android實(shí)現(xiàn)底部對(duì)話框BottomDialog彈出實(shí)例代碼
本篇文章主要介紹了Android實(shí)現(xiàn)底部對(duì)話框BottomDialog代碼。這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。2017-03-03Android使用ViewBinding的詳細(xì)步驟(Kotlin簡(jiǎn)易版)
最近這段時(shí)間在學(xué)習(xí)Kotlin,突然發(fā)現(xiàn)谷歌已經(jīng)把kotlin-android-extensions插件廢棄,目前推薦使用ViewBinding來(lái)進(jìn)行替代,接下來(lái)通過本文給大家分享Android使用ViewBinding的詳細(xì)步驟,感興趣的朋友一起學(xué)習(xí)吧2021-05-05Android之用PopupWindow實(shí)現(xiàn)彈出菜單的方法詳解
本篇文章是對(duì)在Android中,用PopupWindow實(shí)現(xiàn)彈出菜單的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06Android ANR(Application Not Responding)的分析
這篇文章主要介紹了Android ANR(Application Not Responding)的分析的相關(guān)資料,這里說(shuō)明什么原因出現(xiàn)應(yīng)用程序的強(qiáng)制關(guān)閉,并說(shuō)明該如何避免,需要的朋友可以參考下2017-08-08