NDK开发时,在build.gradle中,cmake和ndk都有abiFilters的设置。如下所示:

            cmake {cppFlags ""abiFilters "armeabi-v7a"}ndk {abiFilters "armeabi-v7a"}

  它们的含义有所不同。cmake设置的abiFilters会让项目编译时只生成对应abi的so, ndk 设置的abiFilters会成为对应apk的primaryCpuAbi。如果不设置这一项,系统会寻找ro.product.cpu.abilist的值,将ro.product.cpu.abilist的值的第一项(64位处理器手机下为arm64-v8a)作为应用的abi,那么寻找so目录是在lib/arm64/下寻找的。所以,如果设置了cmake的abiFilters为armeabi-v7a,务必把ndk的abiFilters也设置为armeabi-v7a,不然会报以下错误:

--------- beginning of crash
03-24 18:17:52.113  5739  5739 E AndroidRuntime: FATAL EXCEPTION: main
03-24 18:17:52.113  5739  5739 E AndroidRuntime: Process: com.example.inlinehook, PID: 5739
03-24 18:17:52.113  5739  5739 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.inlinehook-ZI6gBWAJBMiKAWoKzcH-hA==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.inlinehook-ZI6gBWAJBMiKAWoKzcH-hA==/lib/arm64, /system/lib64, /vendor/lib64]]] couldn't find "libinlinehook.so"
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at java.lang.Runtime.loadLibrary0(Runtime.java:1011)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at java.lang.System.loadLibrary(System.java:1657)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at com.example.inlinehook.MainActivity.<clinit>(MainActivity.java:12)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at java.lang.Class.newInstance(Native Method)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at android.app.Instrumentation.newActivity(Instrumentation.java:1174)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2862)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3054)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at android.app.ActivityThread.-wrap11(Unknown Source:0)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1724)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:106)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:164)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:7009)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
03-24 18:17:52.113  5739  5739 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
03-24 18:17:52.118   869   900 W ActivityManager:   Force finishing activity com.example.inlinehook/.MainActivity

NDK abiFilters含义相关推荐

  1. android配置so支持armeabi,安卓项目中so库选择(ndk abiFilters设置,armeabi,armeabi-v7a,arm64-v8a)...

    背景 Android 系统本质是一个通过改造的 Linux 系统,so库是Linux系统上使用的共享库(相似windows上的dll).最先,Android 系统只支持 ARMv5 的 CPU 构架, ...

  2. Android ndk.abiFilters armeabi-v7a、arm64-v8a、arneabi、x86、x86-64 解析

    故事背景 今天公司项目打完包,突然发现apk的size从原来的50多M激增到85M,作为敏感的我,肯定是要查清楚原因的. 如何排查呢,肯定是结果出发,我们解压了最新的apk,对比上个版本的apk,看一 ...

  3. ERROR: Conflicting configuration : ‘arm64-v8a‘ in ndk abiFilters cannot be present when split...

    Android 官网通知,从 2019 年 8 月 1 日开始,您在 Google Play 上发布的应用必须支持 64 位架构.64 位 CPU 能够为您的用户提供更快.更丰富的体验.添加 64 位 ...

  4. 安卓项目中so库选择(ndk abiFilters设置,armeabi,armeabi-v7a,arm64-v8a)

    背景 Android 系统本质是一个经过改造的 Linux 系统,so库是Linux系统上使用的共享库(类似windows上的dll).最早,Android 系统只支持 ARMv5 的 CPU 构架, ...

  5. Android ndk abiFilters 无效 解决方案

    1.问题产生原因 项目引用远程gradle配置,该配置已经默认数种cpu架构类型,但是我在当前项目由于某种原因只想要其中一种架构,怎么处理? 原配置 ndk {abiFilters 'armeabi- ...

  6. ReactNative进阶(三十八):Android ndk abiFilters 详解

    一.前言 二.ABI 是什么 三.为何设置 ndk 的 abiFilters 四.如何配置 gardle 五.ABI支持详解 六.支持建议 七.拓展阅读 一.前言 Android 系统本质是一个经过改 ...

  7. android so abi适配,Android NDK学习(六): so文件兼容之abiFilters的使用

    最近项目中遇到了要使用JavaCV的情况,涉及到了abi兼容的选择.因为如果全部都适配的话,包很大,这样兼容那些用户数极少的cpu就很不划算,所以我只适配了armeabi-v7a这一个.但是今天在x6 ...

  8. 边实验边分析-NDK篇-abiFilters配置分析

    边实验边分析-NDK篇-abiFilters配置分析 首先我们需要了解一个行为,NDK会对我们的原生代码进行构建,针对不同的操作系统架构,生成不同的ABI(应用程序二进制接口)的so库,并将构建生成的 ...

  9. Android NDK学习(六): so文件兼容之abiFilters的使用

    最近项目中遇到了要使用opencv的情况,涉及到了abi兼容的选择.因为如果全部都适配的话,包很大,这样兼容那些用户数极少的cpu就很不划算,所以我只适配了armeabi-v7a这一个.但是今天在x6 ...

最新文章

  1. Koltin 高阶函数
  2. 抓取html的地址怎么写,html js 获取地址栏参数
  3. 什么是Ajax和JSON,它们的优缺点
  4. node php聊天室,最简单的Nodejs聊天室示例
  5. vim ctrlp_使用Ctrlp和Ctag使Vim更智能
  6. java核心api_Java核心API需要掌握的程度..你做到了多少??
  7. js中加“var”和不加“var”的区别,看完觉得这么多年js白学了
  8. ftp上传文件夹_ftp同步软件哪个好,ftp同步软件哪个好,6款好用推荐
  9. 理解eos区块链的eosio.token合约
  10. 原生js循环展示dom_为什么说JS的DOM操作很耗性能
  11. 三维点云学习(1)上-PCA主成分分析 法向量估计
  12. Android自动化测试在多种屏幕下的注意事项
  13. spark MetaException(message:Version information not found in metastore. )
  14. Linux系统管理员应该知道的20个系统监控工具
  15. 超全汇总!常见的芯片封装大全!
  16. 夜深人静写算法(十四)- 基数估计 (Cardinality Estimation)
  17. jena 查询 java_Java调用Jena写SPARQL查询
  18. 云计算供应商在合同谈判时可能拒绝的三个事项以及要求
  19. 为什么我星际争霸画面是窗口_为什么我喜欢看全球星际联盟
  20. 华为mate40e灭屏显示教程

热门文章

  1. 基于Auto.js的支付宝批量自动转账脚本
  2. 艾出行广告精灵挂机源码+对接码支付即时到账+充值系统+推广下级系统+封装app
  3. Python负数整除和取余
  4. python控制excel能达到什么目的_你精通excel吗?不,我精通python操控excel!
  5. windows系统语言栏无法显示的解决方法
  6. 无处不在的流计算到底是什么?终于有人讲明白了
  7. 关联分析(一):频繁项集及规则产生
  8. 新手项目遇到的小难题,后台带\n
  9. mysql存储过程concat_mysql 存储过程 CONCAT 字符串拼接
  10. 大文件下载断点续传后台功能,模仿百度网盘下载功能