在将应用拆分为模块的过程中,我发现我们达到了dex字段数限制:
D8: Cannot fit requested classes in a single dex file. Try supplying a main-dex list.
# fields: 93259 > 65536
调查后,我发现这些字段中的大多数(〜67000)属于来自各种R.java
文件的常量。
并且随着添加新模块,这个数字增长非常快,因为每个模块的R.java
文件都包含来自所有依赖项的常量。
我在proguard-android.txt
中发现了Proguard规则,可防止它缩小:
-keepclassmembers class **.R$* {
public static <fields>;
}
因此我删除了此规则,并且字段计数恢复正常。
有人知道为什么将此规则添加到默认的Proguard配置中,以及如果Proguard收缩了这些字段会带来什么后果?