Android里,使用Ellispe混淆jar包的时候,如果jar包里没有访问资源文件的代码,那么直接配置proguard即可,但是如果需要jar包里有访问资源文件的代码,那么直接混淆会有问题:
因为混淆jar包的时候,需要找到代码内的所有定义。
所以需要使用静态的R,因为内部如果没有R的定义,混淆会失败。
具体做法是,单独保存R文件,在代码里引用文件,例如:
public final classR {
public static final classattr {
}
public static final classcolor {
public static final intsolid_black=0x7f040001;
public static final intsolid_white=0x7f040000;
}
public static final classdimen {
public static final footer_max_length=0x7f050002;
}
}
然后在需要加载资源的时候,使用此类即可。这样就不会出错了。
但是在Android Studio下,这样做就不行了。
因为Android Studio下使用静态R会有问题,会报找不到资源的错误。那么在Android Studio下代码混淆的时候,只混淆aar即可,不能使用静态的R,还是使用Build里的R即可。