有没有办法禁用 Kotlin 元数据或只是混淆它们?它是在编译期间添加的。整个代码被很好地混淆了,但名为"kotlin-reflect.jar"的 Kotlin 库留下了方法详细信息,如类名、方法和带有类型的参数。
@Metadata(mv = {1, 1, 13}, bv = {1, 0, 3}, k = 1, d1 = {"\000\022\ 02\030\002\ 02\030\002\ 00\ 02\020\016\ 02\b\002\030\0002\0020\001B\r\022\006\020\002\0020\003?\006\002\020\004R\016\020\002\032\0020\003X?\004?\006\002\ 00 \006\005"}, d2 = {"Lcom/test/SomeException;", "Lcom/test/SomeException;", "errorMessage", ", "(Ljava/lang/String;(V", "build"}( 公共最终类 SomeException 扩展 Exception { public SomeException(@NotNull String paramString( { super(paramString(; this.errorMessage = paramString; } 私有最终字符串错误消息; }
我创建了"unmeta",这是一个Android Gradle插件,可以删除所有Kotlin @Metadata
,并为发布版本@DebugMetadata
注释。
你可以在这里找到它:https://github.com/oliver-jonas/unmeta
它使用 ASM 并直接对编译的字节码进行操作。