当前位置: 代码迷 >> 综合 >> 安卓开发小问题-- Device supports x86, but APK only supports armeabi-v7a
  详细解决方案

安卓开发小问题-- Device supports x86, but APK only supports armeabi-v7a

热度:29   发布时间:2024-01-09 17:25:28.0
Device supports x86, but APK only supports armeabi-v7a


对于不同的平台,我们应该怎么去进行适配? 

目前主流的Android设备肯定是armeabi-v7a架构的,然后就是x86和armeabi了。如果同时包含了 armeabi, armeabi-v7a和x86,所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,但是同时也会导致包变大。 
armeabi-v7a是可以兼容armeabi的,而v7a的CPU支持硬件浮点运算,目前绝大对数设备已经是armeabi-v7a了,所以为了性能上的更优,就不要为了兼容放到armeabi下了。x86也是可以兼容armeabi平台运行的,另外需要指出的是,打出包的x86的so,总会比armeabi平台的体积更小,对于性能有洁癖的童鞋们,还是建议在打包so的时候支持x86。

3.如果第三方没有提供对应平台的.so文件怎么办? 
有一些第三方的类库只提供了armeabi下的.so文件,如果我们项目里适配了armeabi-v7a和x86,如果不在对应的文件下放对应的.so文件,就可能导致某些Android设备会出一些问题,我们可以复制armeabi下得.so文件到不同的文件夹下。如果第三方提供了不同平台的.so文件,则复制不同平台的.so文件到项目中对应的文件夹下即可。

然后去看我的工程,发现就只有armeabi-v7a

so
Device supports x86, but APK only supports armeabi-v7a

解决方案:在这里边添加"x86","x86_64","armeabi-v7a"

android {
      ndk {
            abiFilters "armeabi","x86","x86_64","armeabi-v7a"  }

    }

然后就可以继续运行了


  相关解决方案