[toc]
相信大家都用过很多第三方的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库.
此文已同步发布CSDN