Skip to content

Latest commit

 

History

History

proguard

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

填坑

  • proguard 本身是没啥问题的,所以一般出问题大概率不会因为proguard
  • proguard 是基于规则进行混淆的,若是出问题大概率出现在你的规则上
  • 规则问题,一般都是规则覆盖不全导致的
  • 模板规则对于普通代码是没问题的,但是对于采用特殊代码实现的就覆盖不上了
  • 比如反射,反射一般有两种方案
  • 一种是调用java的反射库
  • 一种就是直接写死代码,编译时让编译系统认为是系统类,不会报错,正常编译
  • 调用反射库的,除非反射的是系统类,否则必须要新增规则才能覆盖上
  • 写死代码的,若是不新增规则进行覆盖,则proguard会认为是普通代码,而直接写死代码时,有些函数可能不会被自身调用,导致被混淆掉,这时就需要新增规则进行适配
  • 如何定位代码呢,就是采用-keep 进行一个个排除即可,或者直接分析代码,看哪些地方会调用反射或写死代码
  • 记住:所有的-keep都是为反射服务的,没有-keep解决不了的反射问题