调用 ByteDancePlugin.getBeautyList() 返回美颜集合【美白,磨皮,锐化】
调用ByteDancePlugin.getShapeList() 返回美型集合【大眼,瘦脸】
当调用 ByteDancePlugin.getBeautyList() 返回美颜集合,又addAll了所有的美型集合导致该问题代码如下图:
error.png
以后我每次打开 对话框 ,里面的美型数据就多了一份,,关于这个问题 ,
我问字节跳动的相关人员 , sdk有没有设置 美颜的方法,人家说没有,,这是哪里出现问题了呢?
难道有地方给它设置数据? 设置数据的方法有那些?通过反射,,人家的sdk是经过混淆的,,
反复猜想 ,,,是它返回的List 原始集合, 我往里面又加入了 美型的集合,,所以就污染了它 美颜集合,(猜想,获取美颜集合时,它sdk内部会判断内存中是否有如果有就直接返回 ,而不会再读json文件 )
修改方法是 :
new ArrayList 分别把 美颜 和 美型 的集合放到里面去,这样就不会污染 它们的数据了。new ArrayList 的方式 是浅拷贝。 修改后的代码:
right.png
注意点:
如果我要是该sdk相关开发人员,提供 getBeautyList()或 getShapeList() 时,会返回一个 美颜或美型集合的副本,,这样也不至于熊孩子把我的sdk给玩坏
最终效果如下图:
ok.jpeg关注我的github
https://github.com/fuyuguang
带你了解更多项目实践中的bug
网友评论