Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86区别)

 更新时间:2023年08月08日 12:20:48   作者:旺仔大牛  
默认情况下,Android和Flutter打包出来的Apk都是包含了所有架构的,这样打出来的apk体积相对于单架构的apk有点大,这时,我们就需要分别打出不同的架构包

默认情况下,Android和Flutter打包出来的Apk都是包含了所有架构的,这样打出来的apk体积相对于单架构的apk有点大。

这时,我们就需要分别打出不同的架构包。

架构

一般来说,x86代表32位CPU,x64(或者叫x86-64)代表64位CPU。

在Android中,支持专有cpu架构也是Application Binary Interface(ABI)。

Android开发者官网文档中支持的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这段时间,为了赶上移动互联网的浪潮,Intel和Nvidia专门为Android手机和平板推出过X86架构的CPU,可惜都失败了。现在一般不需要适配此架构,除非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)内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android应用借助LinearLayout实现垂直水平居中布局

    Android应用借助LinearLayout实现垂直水平居中布局

    这篇文章主要介绍了Android应用借助LinearLayout实现垂直水平居中布局的方法,文中列举了LinearLayout线性布局下居中相关的几个重要参数,需要的朋友可以参考下
    2016-04-04
  • Android基于ListView实现类似Market分页加载效果示例

    Android基于ListView实现类似Market分页加载效果示例

    这篇文章主要介绍了Android基于ListView实现类似Market分页加载效果,结合完整实例形式分析了ListView的OnScroll方法来实现分页与滚动加载的操作步骤与相关实现技巧,需要的朋友可以参考下
    2016-10-10
  • Android Studio中使用jni进行opencv开发的环境配置方法

    Android Studio中使用jni进行opencv开发的环境配置方法

    今天小编就为大家分享一篇Android Studio中使用jni进行opencv开发的环境配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Android图像处理之泛洪填充算法

    Android图像处理之泛洪填充算法

    这篇文章主要介绍了泛洪填充算法,工作原理是从一个点开始附近像素点,填充成新的颜色,直到封闭区域内的所有像素点都被填充新颜色为止,分享给大家供大家参考
    2018-05-05
  • Android中如何指定SnackBar在屏幕的位置及小问题解决

    Android中如何指定SnackBar在屏幕的位置及小问题解决

    这篇文章主要给大家介绍了关于Android中如何指定SnackBar在屏幕的位置,以及一个小问题解决的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • Android实现PDF预览打印功能

    Android实现PDF预览打印功能

    这篇文章主要为大家详细介绍了Android实现PDF预览打印功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 利用Android画圆弧canvas.drawArc()实例详解

    利用Android画圆弧canvas.drawArc()实例详解

    这篇文章主要给大家介绍了关于利用Android画圆弧canvas.drawArc()的相关资料,文中通过示例代码介绍的非常详细,对大家的理解和学习具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • Flutter上线项目实战记录之路由篇

    Flutter上线项目实战记录之路由篇

    这篇文章主要给大家介绍了关于Flutter上线项目实战记录之路由篇的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Flutter具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • android4.0混淆XmlPullParser报错原因分析解决

    android4.0混淆XmlPullParser报错原因分析解决

    今天,用android4.0在proguard-project.txt中加入 -libraryjars libs/ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar这句话后,混淆时报上面的错误,下面与大家分享下具体的解决方法
    2013-06-06
  • 如何用HMS Nearby Service给自己的App添加近距离数据传输功能

    如何用HMS Nearby Service给自己的App添加近距离数据传输功能

    这篇文章主要介绍了如何用HMS Nearby Service给自己的App添加近距离数据传输功能,本文通过图文示例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07

最新评论