Kotlin 数据类的 toString 方法的混淆

Stu*_*ing 5 android kotlin android-r8

我在我的应用程序中到处使用 Kotlin 数据类。

我在编译时使用 R8。

我有一个安全要求,即生成的toString方法不能包含原始属性名称。目前,生成的方法包含纯文本形式的整个类属性名称及其混淆值名称。

public String toString() {
    return "MyClass(id="+this.f1231msd+", password="+this.fj92313+")");
}
Run Code Online (Sandbox Code Playgroud)

我有几个选择,但我想看看是否还有其他我没有找到的选择。

  1. 我检查了 Proguard 的源代码,发现这个类toString方法中使用了混淆名称。如果 R8 这样做但似乎没有这样做,这将是完美的。
  2. toString用空字符串手动覆盖每个数据类的方法。
  3. 为我编写第 2 步的 R8 规则
  4. 创建一个编译时注释以返回一个空字符串 toString

还有其他选择吗?

Stu*_*ing 3

在寻找其他选项和解决方案后,我决定修改现有的编译器插件,为我自动执行此操作。

\n

这样做的目的是让我在开发过程中仍然可以从 Kotlin 自动生成的方法中受益,但随后会在发布编译时toString()编辑内容。toString()

\n

它输出这样的方法:

\n
public String toString() {\n    return "\xe2\x96\x88\xe2\x96\x88";\n}\n
Run Code Online (Sandbox Code Playgroud)\n

目前这只是在分支中的分支redact-all-and-class-names,但它可能会包含在主库中。

\n