最近在做网红项目,是个聊天工具,在我们发送礼物或者评价的时候,会吧消息的messagebody瓶装成json 字符串的形式交给后台处理,出行pc 端始终收不到消息的问题,本地的电脑上测试的包debug 看没有啥问题,是正确的json 字符串的样式,后来在服务端,看到的是{"a":"XXXX","b":"xxx"}这样的样式,问题的关键是本地测试包没有问题,在mcd 打的包会出现这种情况,问题出现在这个json 串被混淆了,查看代码:
item.setGiftText(gift.giftDesc);
GiftModel giftModel = new GiftModel();
giftModel.title = gift.giftDesc; giftModel.ext.giftId = String.valueOf(gift.giftId); giftModel.ext.image = gift.giftImage; giftModel.action = ChatConstants.GIFT_TYPE; giftModel.isPresent = true; JSONObject object = JsonUtil.simpleObjectToJson(giftModel); if (object != null) { item.setMessage(object.toString()
);
}
这个里用到了GiftModel 这个类,利用java 的反射机制,将数据进行拼接,
是的,我们会发现,Java的反射再也找不到它想找的类,或者方法,或者属性了。
是的,因为代码混淆的原因,原本的类名、方法名、属性名都改变了,而反射它还是按照原来的名字去反射,结果只能射出一个程序崩溃。
解决的方法当然有~
那就是,让和反射有关的那些代码或者类,不进行混淆,那就不会有上述的问题了~!
public class ctrip.android.hotel.order.librichtexteditor.GiftModel{ public *;protected *;}