android abi配置

配置

defaultConfig {
  ...
  ndk {
    // abiFilters "all"

    // x86_64模拟器需要x86,所以测试版打包留着x86
    // 现在应用市场都要求有32位和64位
    abiFilters "armeabi-v7a", "arm64-v8a", "x86"
  }
}

abi 说明

        ndk {
//            Android中在进行NDK开发的时候,都知道因为机型杂而多的原因,没有一个大的标准,所以很多厂商都会采用不同型号的cpu,
//            那么在编译so文件的时候,就需要进行交叉编译出多个cpu平台版本,现在主流的cpu架构版本:
//            armeabi/armeabi-v7a:这个架构是arm类型的,主要用于Android4.0之后的,cpu值32位的
//            x86/x86_64:这个架构是x86类型的,有32位和64位,占用的设备比例比较小
//            arm64-v8:这个架构是arm类型,主要用于Android5.0之后,cpu是64位的
//            这里可以看到,其中arm类型的是往下兼容策略,比如arm64-v8a肯定兼容armeabi/armeabi-v7a,
//            也就是说armeabi/armeabi-v7a架构的so文件可以用在arm64-v8a的设备中的,而armeabi-v7a也是兼容armeabi的,x86/x86_64不会向下兼容(模拟器情况是这样,真机需要测试)。
//            但是因为cpu型号不同,所以arm体系和x86体系之间是不能相互兼容的。
//            todo 另两篇文章参考得出兼容情况:https://blog.csdn.net/xiongya8888/article/details/93938851 , https://blog.csdn.net/rnZuoZuo/article/details/98621400
//            todo      cpu             主要支持ABI                 支持的ABI
//            todo -------------------------------------------------------------------------
//            todo      ARMv5           armeabi                     armeabi
//            todo      ARMv7           armeabi-v7a                 armeabi ,armeabi-v7a
//            todo      ARMv8           arm64-v8a                   armeabi ,armeabi-v7a,arm64-v8a
//            todo      x86             x86                         armeabi ,armeabi-v7a ,x86
//            todo      x86_64          x86_64                      armeabi ,x86 ,x86_64
//            todo      MIPS            mips                        mips
//            todo      MIPS64          猜测应该是mips64             mips,mips64
//            todo 注意x86_64与x86对armeabi-v7a的兼容情况不同:x86_64 -> x86 -> armeabi, x86 -> armeabi-v7a -> armeabi


//            todo abi与CPU的关系:http://blog.csdn.net/xx326664162/article/details/51167849
//            todo so文件兼容问题:http://www.jianshu.com/p/438c136392ba
//            todo 环信没有armeabi-v7a的so包,将环信armeabi中的so包复制了一份到armeabi-v7a
//            todo x86_64模拟器需要x86,所以测试版打包留着x86
//            todo 根据不同情况,打包含不同abi的包。可以在buildTypes或productFlavors中配置abiFilters

            abiFilters "armeabi-v7a", "x86"
//            abiFilters "all"
        }

你可能感兴趣的:(android abi配置)