【发布时间】:2020-11-23 23:58:27
【问题描述】:
我在我的应用中到处使用 Kotlin 数据类。
我在编译时使用 R8。
我有一个安全要求,生成的toString 方法不能包含原始属性名称。目前,生成的方法包含整个类的纯文本属性名称及其混淆值名称。
public String toString() {
return "MyClass(id="+this.f1231msd+", password="+this.fj92313+")");
}
我有几个选项,但我想看看是否还有其他我没有找到的选项。
- 我检查了 Proguard 的源代码,发现 this class 在
toString方法中使用了混淆名称。如果 R8 这样做但似乎没有这样做,这将是完美的。 - 使用空白字符串手动覆盖每个数据类的
toString方法。 - 为我写一个 R8 规则到第 2 步
- 创建一个编译时注释以返回一个空白字符串
toString
还有其他选择吗?
【问题讨论】:
-
5.摆脱
toString()调用,然后查看R8 是否将实现删除为未使用。 6. 提交功能请求让 R8 处理此问题。 7. 为“overridetoString()with blank output”场景写一个Kotlin编译器插件。 -
5.好点子。我认为你是对的。我使用 Timber 进行日志记录,所以 R8 可能没有剥离这些类
toString()方法的隐式使用。 6. 可以这样做 7. 目前正在考虑实现一个编校编译器插件 - github.com/ZacSweers/redacted-compiler-plugin 谢谢你回到我身边
标签: android kotlin android-r8