五一一个人,求组织,求关怀

这里讲的是apk混淆后出现的bug怎么确定bug地方,而不是因为混淆出现的错误。

apk进行混淆后,所有的类(除了-keep的)都变成了com.a.b.c的样子,一但出现了bug,log输出如下

  1. java.lang.NullPointerException  
  2. at com.test.b.a.a(Unknown Source)  
  3. at com.test.b.a.a.m(Unknown Source)  

这个错误怎么定位啊?

细心的同学可能会发现在混淆后,工程中会增加一个proguard文件夹,如下图

关于apk混淆后出现的bug查找_关于apk混淆后出现的bug查找

一眼就看到了mapping.txt(map:映射的意思),它是多么的刺眼啊。对,mapping.txt中就存储了混淆的映射关系。将bug在mapping.txt中搜一下,就能定位到源码的具体位置。

注意:每次混淆打包后,这个文件都会被覆盖。所以当你发布新版本的时候,都需要拷贝相应版本的mappint.txt文件,以备日后解决bug用啊。

关于混淆后出现bug,也有人是把关键代码混淆,而不是全部混淆,这样能减少少bug查错的范围。最近有款apk加固软件叫“梆梆”,我在想如果用它加固后的apk,如果万一出现bug了,是怎么样的

同学们假期愉快,注意休息,对于Coder,身体才是我们最大的财富!