StringFog icon indicating copy to clipboard operation
StringFog copied to clipboard

fix bugs caused by multiple configurations

Open 7449 opened this issue 1 year ago • 3 comments

一个项目多项配置StringFog导致的Bug

一个项目里面多个Project都配置StringFog会导致找不到所需的StringFog.java
提示Missing class packageName.StringFog, 这里的packageName是插件apply方法获取的最后一个Project

复现:

分别创建包名为com.github.sample.A和包名为com.github.sample.B的两个Library都配置StringFog,
ALibraryrelease包的时候会提示找不到com.github.sample.B.StringFog

这里BLibrary是项目运行时插件获取到的最后一个Project,如果配置了三个StringFog分别是A,B,C 就会提示找不到C包名下的StringFog.java

原因:

StringFogTransform的数据都是通过静态变量赋值,className一直都是最后一个Project的包名, 配置一个没有这个问题

7449 avatar Sep 09 '23 08:09 7449

@7449 你好,感谢提交PR。关于StringFogTransform静态赋值的问题我知道的,之所以没有使用参数传值是因为参数需要序列化,比如IKeyGenerator就需要强制序列化。对于继承IKeyGenerator自己实现一些加密解密方法的可能会出现无法序列化的问题,会影响到一部分用户,这个我一直没有找到好的解决方法。

MegatronKing avatar Sep 12 '23 12:09 MegatronKing

这个我也发现了,要不就强制IKeyGenerator 需要序列化,要不就和implementation一样通过反射去获取,提供个无参构造就行了或者提供构造参数,或者两个都弄上,有的只是简单加密不需要太复杂的方式 我觉得序列化方便一点,java层加密也只是求个心安

update: 或者用一个静态map[k->applicationId,value->StringFogExtension],parameters只需要传递一个applicationId

@MegatronKing

7449 avatar Sep 12 '23 15:09 7449

我也遇到了,这个问题还可以解决吗?

shabic avatar Dec 06 '23 02:12 shabic

#160 方案更好点,这个PR我关闭了。

MegatronKing avatar Jul 09 '24 12:07 MegatronKing