场景:
项目只支持armeabi-v7,引入一个第三方aar,该aar只支持armeabi。
问题:这时候面临的两个取舍问题
1,为了兼容性更好同时导入armeabi-v7和armeabi的so包,但包体积会增大好多。
2,为了控制包体积的大小,只放armeabi-v7的包,但是无法兼容老机型。
解决办法:
1、方法一:放armeabi-v7的so就可以了,少数老设备才需要armeabi。如果想万无一失,兼容老设备,那就只能牺牲包体积,两个都放。
2、方法二:把so放到云端,按需加载到data/data/包下,读取CPU架构和当前设备的第一指令集,
String[] abis = new String[]{};
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP)
{
abis = Build.SUPPORTED_ABIS;
} else {
abis = new String[]{Build.CPU_ABI,Build.CPU_ABI2};
}
StringBuilder abiStr = new StringBuilder();
for(String abi:abis)
{
abiStr.append(abi);
abiStr.append(',');
}