Proguard 5.2.1 applymapping出现Warning?

这是因为5.2.1增加了内联函数的行输出信息导致,你可以使用以下几种方法解决:

  • 使用5.1版本proguard;
  • 将内联函数的优化关掉;
  • 自己对mapping文件去除内联函数的行信息。如果使用 4.X 版本的 Proguard 强烈建议升级到 5.1 版本。可以先下载 5.1的 Proguard, 然后通过以下方式指定:
  1. classpath files('proguard-5.1.jar')

若使用gradle编译,与multiDexKeepProguard不同,我们无需将生成的tinker_proguard.pro拷贝到自己的配置中。另外一个方面,若applymapping过程出现冲突,我们可以采取以下几个方法:

  • 添加ignoreWarning;需要注意的是如果某些类的确需要采用新的mapping,这样补丁后App会出问题,一般我们并不建议采用这种方式;
  • 修改基准包的mapping文件;我们需要根据新的mapping文件,修正基准包的mapping文件。例如将warning项删掉或者将新mapping中keep的项复写到基准的mapping中。可以参考脚本proguard_warning.pymerge_mapping.py注意,如果想通过直接删除旧mapping文件的冲突项,需要注意删除类的内部类是否存在混淆冲突