Item 中增加了一个内部类 PageConfig。
这里敲黑板了:
1.Item 里面的字段、Item 里面引用到的类和 Item 里面的内部类 PageConfig 都需要实现序列化 (implements Serializable);
- 如果不是 implements Serializable 实现序列化,而是给每个字段加上 @SerializedName 注解,那么务必注意:Item 里面的字段、Item 里面引用到的类的和 Item 里面的内部类的字段都需要加上 @SerializedName 注解,否则会出现莫名其妙的问题:不会崩溃,就是各种奇怪现象,而在 debug 下又不出现这个问题。
最常见的做法是:
-keep class com.baidu.bean.** { *; }
含义是:将 bean 目录下包括子目录下的类排除不被混淆
单独排除某个类可以这么写:
-keep class com.baidu.bean {*;}
单独排除某个类的内部类需要这么写:
-keep class class com.baidu.bean.Item$PageConfig {*;}
如果很多实体类里面有内部类,建议组合起来写:
-keep class com.baidu.bean.**{ *;}
-keep class com.baidu.bean.**$*{ *;}
另外,下面的写法也是可以的,主要以上面的写法为主。具体要使用哪种,读者可以自己根据需要使用。
-keep class com.baidu.bean.$** { ;}
-keep class com.baidu.bean.$ {*;}
-keep class com.baidu.bean.**$* {*;}
上面出现了 * 和 ** 通配符的配置,为了便于加深印象,这里延伸阅读下:
[](
)Android 混淆最佳实践
============================================================================
[](
)1. 混淆配置
android{
buildTypes {
release {
buildConfigField "boolean", "LOG_DEBUG", "false" //不显示log
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
}
因为开启混淆会使编译时间变长,所以 debug 模式下不开启。我们需要做的是:
-
将
release下minifyEnabled
的值改为true
,打开混淆; -
加上
shrinkResources true
,打开资源压缩。
3.buildConfigField
不显示 log 日志
4.signingConfig signingConfigs.config
配置签名文件文件
[](
)自定义混淆规则
==========================================