Android NDK: Application targets deprecated ABI(s): armeabi Open File

Error:(81) Android NDK: Application targets deprecated ABI(s): armeabi
Error:(82) Android NDK: Support for these ABIs will be removed in a future NDK release. 
当项目中使用到ndk时可能会爆出这个错误,原因是Android NDK从r16 beta1开始,不再支持 ARM5 (armeabi)。默认情况下,Android NDK不会构建ARM5版本。如果在Application.mk配置了构建ARM5版本,会收到类似以上的警告。

Android系统支持的CPU架构

  • ARMv5:armeabi,32位
  • ARMv7:armeabi-v7a,32位
  • x86:x86,32位
  • MIPS:mips,32位
  • ARMv8:arm64-v8a,64位
  • MIPS64:mips64,64位
  • x86_64:x86_64,64位

解决方法如下:

如果不需要支持ARM5,可以在APP_ABI列表里吧armeabi去掉。

Application.mk配置APP_ABI

Application.mk的参数APP_ABI用来配置Android系统支持的CPU架构。

支持所有架构

APP_ABI := all

支持所有32位架构

APP_ABI := all32

支持指定的架构

APP_ABI := armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64

多个架构使用逗号隔开。

如果一定要用到armeabi,则在app/build.gradle文件下添加设置:

android {
    defaultConfig {

        // ...

        ndk {
            abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' // 'x86', 'x86_64' may be added
        }
   }

   // ...

    task ndkClean(type: Delete) {
        // remove unused archs from build cache
        delete fileTree('.externalNativeBuild') {
            exclude defaultConfig.ndk.abiFilters.collect { '**/' + it }
        }
    }
    tasks.findByPath(':clean').dependsOn ndkClean
}
 重要的是红色字体,将你有的架构包(除armeabi之外的)加入,没有就创建,放入armeabi中相同的so包。
(或者在Application.mk文件中设置APP_ABI:= armeabi armeabi-v7a)

参考:https://majing.io/posts/10000004121193
posted @ 2018-03-14 19:17  Sharley  阅读(946)  评论(0编辑  收藏  举报