Android、Flutter為不同的CPU架構包打包APK(v7a、v8a、x86區(qū)別)
默認情況下,Android和Flutter打包出來的Apk都是包含了所有架構的,這樣打出來的apk體積相對于單架構的apk有點大。
這時,我們就需要分別打出不同的架構包。
架構
一般來說,x86代表32位CPU,x64(或者叫x86-64)代表64位CPU。
在Android中,支持專有cpu架構也是Application Binary Interface(ABI)。
Android開發(fā)者官網(wǎng)文檔中支持的ABI。

armeabi-v7a
此 ABI 適用于基于 32 位 ARM 的 CPU,2016年之前大部分Android手機的cpu都是此架構。
arm64-v8a
此 ABI 適用于基于 ARMv8-A 的 CPU,支持 64 位 AArch64 架構,一般從2016年開始,主流Android手機的cpu架構都是arm64的。
x86
此ABI支持X86架構,像Intel、AMD的cpu都是基于此架構。在2012-2016這段時間,為了趕上移動互聯(lián)網(wǎng)的浪潮,Intel和Nvidia專門為Android手機和平板推出過X86架構的CPU,可惜都失敗了。現(xiàn)在一般不需要適配此架構,除非APK需要安裝在Intel平板上。
x86_64
此ABI支持x86-64位架構的CPU。同上
對于
mips、mips64、armeabi這些架構來說,Android從Android Plugin for Gradle 3.1.0(對應gradle 4.4)后不再支持,因為從NDK r17開始,不再將這些 ABI 作為支持的目標。
APK分包 Android
在模塊級的build.gradle文件中,在android代碼塊中添加splits模塊。基本配置如下。
android { ... splits { // 基于不同的abi架構配置不同的apk abi { // 必須為true,打包才會為不同的abi生成不同的apk enable true // 默認情況下,包含了所有的ABI。 // 所以使用reset()清空所有的ABI,再使用include指定我們想要生成的架構armeabi-v7a、arm-v8a reset() // 逗號分隔列表的形式指定 Gradle 應針對哪些 ABI 生成 APK。只與 reset() 結合使用,以指定確切的 ABI 列表。 include "armeabi-v7a", "arm64-v8a" // 是否生成通用的apk,也就是包含所有ABI的apk。如果設為 true,那么除了按 ABI 生成的 APK 之外,Gradle 還會生成一個通用 APK。 universalApk false } }}
Flutter
使用以下命令后,會自動生成v7a、v8a、x86-64三種架構的apk。
flutter build apk --split-per-abi
生成位置在build/app/outputs/flutter-apk/。

到此這篇關于Android、Flutter為不同的CPU架構包打包APK(v7a、v8a、x86)的文章就介紹到這了,更多相關Android APK(v7a、v8a、x86)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
適配AndroidQ拍照和讀取相冊圖片的實現(xiàn)方法
這篇文章主要介紹了適配AndroidQ拍照和讀取相冊圖片的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
Android Fragment實現(xiàn)列表和內容聯(lián)動
這篇文章主要為大家詳細介紹了Android Fragment實現(xiàn)列表和內容聯(lián)動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
Android之使用Android-query框架開發(fā)實戰(zhàn)(二)
這篇文章主要介紹了Android之使用Android-query框架開發(fā)實戰(zhàn)(二)的相關資料,需要的朋友可以參考下2015-10-10

