让APK只包含指定平台的so库(abi)

相信大家都用过很多第三方的sdk,比如百度地图,支付宝,极光推送等等。如果这个sdk对Android的平台支持全,可能会包含armeabi, armeabi-v7a,x86, arm64-v8a,x86_64五种abi,但是你其他的so库可能只支持其中的几个平台,这样,你编译运行,可能就会Crash。

我试着把QQ和微信的APK解压,发现他们只有armeabi的支持,其他的平台根本不需要,我也就查阅资料,看如何把其他的去掉,开始只想着去删除,后面查询资料发现了更加便捷的方式。

第一种:对每个要生成的渠道包进行分别配置(在app下的build.gradle文件中配置)

productFlavors {
        samsungapps{
            ndk {
                abiFilters "armeabi"
            }
        }
        hiapk{
            ndk {
                abiFilters "armeabi-v7a"
                abiFilters "x86"
                abiFilters "armeabi"
                abiFilters "arm64-v8a"
                abiFilters "x86_64"
            }
        }
        anzhi{
            ndk {
                abiFilters "armeabi-v7a"
                abiFilters "armeabi"
                abiFilters "arm64-v8a"
            }
        }
}
像这种就是单独对渠道包配置,对应打出来的包就只包含你所需要的so库。

第二种:全局配置(这种需求比较多,同样是在app下的build.gradle下配置)

defaultConfig {
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
        }
    }

这样生成的所有Apk就最多有 armeabi, armeabi-v7a, arm64-v8a这三种平台的so库,当然要它本身就有这三个平台的so库

更多分享请搭载老爷车进入开车啦

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值