我决定将哪一个用于Android Studio项目,我愿意使用Kotlin。如果在比java更难逆向工程方面有优势。
答案 0 :(得分:8)
没有。科特林并没有这样的意图。与Scala或Groovy(以及许多其他魔法 JVM语言)不同,Kotlin的字节码结构并不复杂,这意味着使用kotlin在普通Java上没有优势。避免逆向工程。
无论如何,你不应该注意这个,除非你的应用程序包含一些神奇的东西,例如:一种特殊的方法,可以利用某个安全漏洞,一个包含私钥的特殊代码(这是一种不好的做法)等来跳过一些安全约束。
关于避免逆向工程的SO post可能会让您感兴趣。
偏离主题:Scala难以进行逆向工程,因为Scala需要 hard 才能理解。它生成的字节码通常与其源代码没有任何共同之处。我曾经想解释所有implicit
和其他人背后发生的事情,但我发现了一堆乱七八糟的东西。 (你不应该使用javap来理解scala代码,scala有其他实用程序)而groovy是因为它是一种动态语言,它的字节码形式有很多魔法只是为了让它成为动态的动态。我知道这一点是因为我在开发gradle插件时发现了我的gradle构建脚本是如何工作的。我确实找到了生成的类文件,但我甚至无法找到dependencies
块在其反汇编形式中的位置。