gpt4 book ai didi

kotlin - 如何使用 proguard 定位 kotlin `internal` 类?

转载 作者:IT老高 更新时间:2023-10-28 13:35:26 25 4
gpt4 key购买 nike

我想对任何标有 kotlin internal 的类进行保护(混淆)可见性修饰符。

Kotlin internal 类在 JVM 上是公共(public)的,因此它们在 Java 源代码中是可见和可用的。我不希望这些类被使用或出现在自动完成中,所以我想混淆它们以阻止它们的使用。

我可以对目标 internal 类应用什么 proguard 规则?

最佳答案

Kotlin reference guide 中所述:

internal declarations become public in Java. Members of internal classes go through name mangling, to make it harder to accidentally use them from Java and to allow overloading for members with the same signature that don't see each other according to Kotlin rules;

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

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

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

关于kotlin - 如何使用 proguard 定位 kotlin `internal` 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49632392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com