【发布时间】:2019-06-28 15:59:33
【问题描述】:
我正在使用 Kotlin 创建一个桌面应用程序,并试图混淆最终输出
我使用 JavaFx 和 Kotlin 开发一个应用程序。我使用 Gradle 作为构建工具,我正在寻找如何混淆我的 jar 以避免对 jar 进行逆向工程。生成的 jar 是一个胖 jar(所有库都在 jar 内)。我已经尝试在我的 gradle.build 中使用 proguard,但是每次我运行我的构建时,我都会得到很多“找不到引用的类”的原生 java 库类,例如 Object、String 等。
这是我当前的 proguard 任务:
def jarNameWithoutExtension = jar.archiveName.with {
it.take(it.lastIndexOf(".")) }
def obfuscatedJarName = "${jarNameWithoutExtension}-release.jar"
def jarFileLocation = jar.archivePath.parent
def obfuscatedFilePath = Paths.get(jarFileLocation, obfuscatedJarName)
task obfuscate(type: ProGuardTask) {
configuration 'proguard.txt'
injars jar.archivePath
outjars obfuscatedFilePath.toString()
libraryjars files(configurations.compile.collect())
libraryjars "/usr/lib/jvm/java-11-oracle/lib/rt.jar"
doLast {
jar.archivePath.renameTo(Paths.get(jarFileLocation, "$jarNameWithoutExtension-original.jar").toFile())
obfuscatedFilePath.toFile().renameTo(jar.archivePath)
}
}
jar.finalizedBy(project.tasks.obfuscate)
proguard.txt 文件目前为空 错误示例是“警告:javafx.animation.Animation:找不到超类或接口 java.lang.Object”
我希望在构建我的项目时生成一个混淆的 jar 文件,但我得到的只是编译错误
我希望有人可以帮助我解决我的问题
【问题讨论】: