最近公司布置了一个新任务,给一个旧的安卓app增加一个新功能。
功能是替换加密算法,新的算法库由第三法提供,通过jni调用底层C++库。
按照项目需求,修改了代码,调试测试阶段也都运行正常。结果发布的时候,测试反馈app崩溃了。
惊掉!我立即调试运行了代码,发现果然崩了。令人疑惑的是之前在开发调试阶段的时候,一切运行正常,为何打包之后再调试就崩了呢?
检查代码,流程是正确的。
查看异常信息,有"a.b.c.e.f"什么的,是调用第三方库的函数异常了。
没有思路,就问大神。
问了之前一个同事,讲了bug的症状他说是不是因为代码混淆的问题?
尝试将代码混淆关了,果然程序不再崩溃。
因为这个库开了代码混淆,导致函数名异常,所以异常信息中有"a.b.c.e.f"。因为代码混淆异常函数寻址异常,最终app崩溃。