也算踩到了 is 32-bit instead of 64-bit的坑

问题说明

这几天主要在做内存分析与解决内存的释放,然后打开了AS的 “Enable advanced profiling”选项
注:刚‘接手“的项目,代码都不熟悉,好扯蛋!!!
在这里插入图片描述
打开这个选项后,触发了一系列的反应,结果是应用一运行就崩溃!!!

原因分析

去看下自己应用的apk中的so,是怎么样的情况?
在这里插入图片描述
发现个奇怪的so (ibsupportjni.so),然后当前自己有分析的项目只使用32位的so,所以就踩中了android 应用安装与加截so的如下规则

当你安装应用到系统时,系统会从lib目录下的(armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips64, mips)文件夹中查找本地库文件,不同的架构加载不同的文件夹下的库文件。例如64bit的架构从arm64-v8a、x86_64、mips64这些目录中加载。如果你的arm64-v8a文件夹下刚好有这个需要使用到的库文件,则不会从其他文件夹如armeabi加载该库文件。此时就会出现32bit库文件和64bit库文件混合使用的情况

** 总结:AS的adevanced profiling选项打开后,会往应用塞一个64位的so,如果自己的应用还没有支持64位的架构,那得注意处理一下 **

解决方案

方案1、关闭 AS的 “Enable advanced profiling”选项
方案2、给自己的应用增加64位so的支持
方案3、在构建脚本中过滤64位so (这时候你是不能使用 AS 的advanced profiling功能了呀!)

参考文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值