• 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
  • 相关阅读:
    stylelint 安装配置
    使用 jest 测试 react component 的配置,踩坑。
    互联网媒体类型 MIME Type
    react-router 父子路由同时要接收 params 的写法
    fixed 相对于父容器定位
    react 点击空白处隐藏弹出层
    canvas 使用 isPointInPath() 判断鼠标位置是否在绘制的元素上
    JavaScript 缓存基本原理
    简单说明 Virtual DOM 为啥快
    通过阻止 touchstart 事件,解决移动端的 BUG
  • 原文地址:https://www.cnblogs.com/Sharley/p/8569569.html
Copyright © 2020-2023  润新知