Zak*_*rdi 11 proguard kotlin dexguard android-proguard
我想对任何标有kotlin internal可见性修饰符的类进行预测(混淆).
Kotlin internal类在JVM上是公共的,因此它们在Java源代码中是可见的和可用的.我不希望这些类被使用或出现在自动完成中,所以我想对它们进行模糊处理以阻止它们的使用.
我可以将什么样的规则适用于目标internal类?
正如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 来定位它。
| 归档时间: |
|
| 查看次数: |
489 次 |
| 最近记录: |