Android 對於armeabi-v7和armeabi的取捨

場景:
項目只支持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(',');
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章