在Unity iOS项目中,使用protobuf-net的Precompile功能会生成大量的序列化/反序列化代码,导致程序集(如CSProtoSerializer.dll)体积膨胀,影响iOS包体审核。下面我将详细梳理优化Precompile、精简PB协议生成程序集大小的具体方案和实现建议。
1. 原理分析
- Precompile会为所有ProtoContract类型生成序列化(Write)和反序列化(Read)代码。
- 实际业务中,request对象只需要序列化(发给服务器),response对象只需要反序列化(服务器返回)。
- 但Precompile默认会为所有类型生成两套代码,造成冗余。
2. 优化目标
- 只为request生成序列化代码(不生成反序列化)
- 只为response生成反序列化代码(不生成序列化)
- 这样理论上能将PB相关代码体积减少接近一半。