gradle的abi

gradle 文件中对abi的配置

官方文档对abi的介绍

Android手机支持的abi:

mips, mips64, X86, X86–64, arm64-v8a, armeabi, armeabi-v7a

各个abi的含义

《gradle的abi》 android abi

通过配置支持的abi,能够让apk文件减到合适的体积,减少应用占用手机的空间。

一般来说,有两种方式来配置abi,相当于两种思路,一个是通过设置ndk的abiFilters字段,使apk能够兼容多种abi,但是这样会使得apk体积增大,所以,这种方式只适合配置主流的abi,使apk能在市场上的大部分手机成功安装使用。
配置方式如下:

android {
    ... // 其它配置
    defaultConfig {
       ...  // 默认配置
       ndk {
           //选择要添加的对应cpu类型的.so库。
            abiFilters 'armeabi', 'armeabi-v7a'
            // 还可以添加
            // 'arm64-v8a', 64 bit ARM architecture,it can use v7 version
            //              unless you are too much concerned about performance
            // mips,mips64, There are no devices with MIPS
            //  x86_64, No android devices and anyway it can use X86 version
            //  armeabi, very old architecture. Unsupported after Android 4.4
            // 'x86', Intel based devices
        }
    }
    ... // 其它配置
}

另一种方式是,splits的abi属性下面,定义好支持的abi,然后打包的时候,会根据不同的架构,打不同的包,每个包支持一种架构,这样能让不同架构的设备上安装最合适的apk,但是因为一个apk仅支持一种架构,所以互不兼容。
配置如下:

android {
    ... // 其它配置
    splits {
        abi {
            reset()
            enable true // 设为true,才能在打包时根据架构生成不同的apk文件
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86" // 设置所有要支持的abi类型
        }
    }
}

参考链接:
https://android.jlelse.eu/controlling-apk-size-when-using-native-libraries-45c6c0e5b70a

    原文作者:zwebbin
    原文地址: https://www.jianshu.com/p/86c4397d296c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞