如何用proguard定位kotlin`内部`类?

Zak*_*rdi 11 proguard kotlin dexguard android-proguard

我想对任何标有kotlin internal可见性修饰符的类进行预测(混淆).

Kotlin internal类在JVM上是公共的,因此它们在Java源代码中是可见的和可用的.我不希望这些类被使用或出现在自动完成中,所以我想对它们进行模糊处理以阻止它们的使用.

我可以将什么样的规则适用于目标internal类?

T. *_*art 2

正如Kotlin 参考指南中所解释的:

内部声明在 Java 中变为公开的。内部类的成员会经过名称修改,以便更难从 Java 中意外使用它们,并允许根据 Kotlin 规则重载具有相同签名但彼此看不到的成员;

查看内部类(带有内部字段 c 的 com.example.Test)生成的字节码显示:

Compile from "Test.kt"
public final class com.example.Test
minor version: 0
major version: 50
flags: ACC_PUBLIC, ACC_FINAL, ACC_SUPER

private final int c;
  descriptor: I
  flags: ACC_PRIVATE, ACC_FINAL
  ConstantValue: int 3

public final int getC$Kotlin_debug();
  descriptor: ()I
  flags: ACC_PUBLIC, ACC_FINAL
  Code:
    stack=1, locals=1, args_size=1
       0: aload_0
       1: getfield      #11                 // Field c:I
       4: ireturn
Run Code Online (Sandbox Code Playgroud)

内部字段有一个名称损坏的 getter,可用于使用 ProGuard 规则来定位它,但内部类本身只是 Java 字节码中的一个普通公共类,似乎没有办法专门使用 ProGuard 来定位它。