Tag: 元数据

我怎样才能混淆我的编码与kotlin的sdk(并摆脱元数据)

我正在开发一个SDK(Android库),我必须混淆我的代码的很大一部分,所以客户可能不会尝试玩内部代码。 我的lib是用kotlin编码的,我用proguard来混淆代码。 问题是在编译和混淆之后,代码中仍然存在@ kotlin.Metadata(运行时)注释。 通过这些注释,检索产生这个“(非那么混淆)”字节码的java代码是很容易的。 我首先想到这是我的错,而且我的项目有太多的熵源可能导致了这种行为,所以我做了一个样本项目来证明这个问题不是来自我的sdk实现。 我用AS创建了一个新项目,然后是一个带有2个文件的lib模块: facade.kt是我的门面类,我不想混淆,所以客户可以使用它: package com.example.mylibrary class MyFacade(val internalClass:InternalClass) { fun doSomething() { internalClass.doSomething( firstArgument=1, secondArgument=2 ) } } 在这个例子中,internal.kt拥有我想混淆的类: package com.example.mylibrary class InternalClass { fun doSomething(firstArgument: Int, secondArgument: Int) { System.out.println("Arguments are : $firstArgument, $secondArgument") } } proguard规则被注入到gradle项目中,并释放这个闭包: buildTypes { release { minifyEnabled true proguardFiles 'proguard-rules.pro' } } 这里是proguard-rules.pro (只有一行,没有更多): […]