博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS9系统下SEGV_ACCERR问题的解决方案
阅读量:5991 次
发布时间:2019-06-20

本文共 1158 字,大约阅读时间需要 3 分钟。

很久不写博客,稍有生疏,感谢一直以来大家的支持。最近我又回到了自己的老本行——
iOS开发。之后的博客应该大部分是iOS相关了,当然,我也会持续关注前端的技术,也欢迎朋友们来捧场哦???

今天要讲的是开发过程中遇到的一个小问题,看到网上也有很多人为之困扰。几番搜索之后,找到了解决方案,希望该方案也能对大家有所帮助。

起因

相信很多开发者收集数据都会用到友盟、bugly之类的工具,笔者就在使用bugly时遇到了一个很棘手的问题:iOS9的系统下,会有一个频发的崩溃,bugly上的描述为SEGV_ACCERR

这个描述大都指对象提前释放,然而堆栈信息也没能提供特别有用的信息来帮助开发者定位该问题。笔者和测试小伙伴反复操作都很难找到必现步骤,逐步打断点调试也无法找到提前释放的对象。

本来想提高适配版本到iOS10,但是又无法抛弃那一群不会更新系统的小白用户们。于是伴随着漫天飞舞的柳絮,我陷入了沉思??

又一村?

抱着试一试的心态,反复换着关键词查,终于。。。在stackoverflow上找到了一个支持量为2的。这个方案讲到:该崩溃与项目中的图片资源相关,具体是伽马值为P3的图片。

这个方案看着不太靠谱,但是能怎么办,当然是选择试一试咯,我也很绝望啊。

以下为该解决方案的翻译:

  1. 打包app并导出ipa
  2. 将导出的ipa文件后缀名改为.zip
  3. 解压该zip文件,解压后有一个Payload文件夹,该文件夹中是你的app bundle
  4. 打开终端,定位到该app bundle。命令如下:
    cd path/Payload/xxx.app
  5. 使用find命令查找到Assets.car文件。命令为:
    find . -name 'Assets.car
  6. 使用assetutil命令找到任何包含着16-bit或者P3的资源文件。对上一步找出的每个Assets.car执行如下命令:

    sudo xcrun --sdk iphoneos assetutil --info /path/Assets.car > /tmp/Assets.json

    第6步里面有两个路径,第一个路径
    /path/Assets.car不要照抄,替换为第五步中查找出的路径。
  7. 使用open命令打开第六步生成的Assets.json。命令为:

    open /tmp/Assets.json

    在第7步打开的文件中查找
    P3字段,对应的
    Name字段即为该资源的名称,删除相应资源,或者修改文件格式即可。

?以下为笔者的操作过程,大家可以对照使用:

图片描述

Done✌️

使用以上方案,笔者找到了伽马值为P3的图片,并和设计小哥哥联系修改了该资源。回测之后,奔溃问题已不再复现,如果该方案也帮助到你了,不妨点个赞吧。

下一周的主题还在构思中。。。记得常回来看看?

转载地址:http://tpnlx.baihongyu.com/

你可能感兴趣的文章
Mongostat 3.0详解
查看>>
Knockout应用开发指南 第五章:创建自定义绑定
查看>>
Java目录
查看>>
23种设计模式
查看>>
超大 Cookie 拒绝服务攻击
查看>>
在Eclipse添加Android兼容包( v4、v7 appcompat )
查看>>
国内PaaS概述和EEPlat定位
查看>>
Android Fragement学习笔记(三)----PreferenceFragment使用
查看>>
简单介绍一下线程池和数据库连接池的原理
查看>>
Nim教程【九】
查看>>
Non Lasting Storage File System、procfs、sysfs
查看>>
Android复制WIN8点击下沉倾斜系统瓷砖效果
查看>>
Bootstrap系列 -- 7. 列表排版方式
查看>>
libSVM 参数选择
查看>>
三石推荐!把 Bootstrap 小清新带回家!
查看>>
Android ContentObserver
查看>>
Linux性能分析top iostat vmstat free
查看>>
Python 2.7.9 Demo - 005.字符串判空
查看>>
ACM-简单的主题Ignatius and the Princess II——hdu1027
查看>>
C#流水号生成汇总(四)
查看>>