Android开发经验谈Android开发Android技术知识

Gradle 使用技巧(二) - SO/NDK过滤

2018-08-23  本文已影响12人  AndroidRookie

引言

作为一个Android开发人员,so对于我们来讲是极其常见的,各种大厂的SDK中都包含着各种各样的so,而so也是apk瘦身的重要一环,减少so平台的数量,可以极大限度的减少apk的大小。

Android 中的so

先看一张官方的图:

ABI

可以将so分为以下几种:

Android Studio中如何引用so

  1. 在main目录下创建jniLibs文件夹,将相应的so库存放进去。
jinLibs
  1. 在相应的module下的gradle中进行配置
android{
    repositories {
            flatDir {
                dirs 'libs'
            }
        }
}

同步项目即可。

如何选择so

先不说原理,我们可以看看大厂是怎么做的。

先看看 TIM

Tim

再看看淘宝

淘宝

从Tim和淘宝的apk包中可以看到,两个都只是保留了armeabi平台的lib,所以我们也可以直接参照大厂的做法只保留armeabi平台,其它的暂时可以不考虑,因为我们也做不到兼容全平台。

如何过滤

直接在gradle中配置即可

buildTypes{
    release{
        ...
        ndk {
                abiFilters "armeabi" // 保留这种架构的CPU
            }
        ...
    }
}
过滤so

一般情况下是在打包的时候指定so,但是也有特殊情况,需要debug模式下过滤,同上,直接在debug中配置即可。

ndk {
    abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}

后续敬请期待!
免为其难的关注一下公众号吧!!

生活实在是太苦啦 FullScreenDeveloper
上一篇 下一篇

猜你喜欢

热点阅读