【发布时间】:2013-06-03 11:43:12
【问题描述】:
我们正在寻找一种方法来保护我们的代码,而混淆是不够的。 是否可以将 Android java 代码编译为原生 Android 库?
另一种选择是用 c 编写代码并通过 JNI 自己连接它。但是我们的代码非常精细且经过良好测试,重写为 c 将重新开始测试。
PS:在我们在 x86 硬件上运行并使用 Excelsior Jet 作为保护手段之前。由于我们希望转向更具成本效益(更便宜)的 Arm/android 硬件,我们正在寻找与 Jet 类似的解决方案,可惜只能编译到 x86。
【问题讨论】:
-
我们用 C++ 重写了它。没那么复杂,只要写单元测试就好了。
-
哎,你把我们带到了那里:)。我们有一些单元测试,但还不够。在过去的 6 年中,该代码在试点项目和生产过程中得到了优化。在回顾中添加单元测试可能非常困难,因为它涉及人们以不可预测的时间间隔触发传感器。不过,这将是编写更多测试的好理由。
-
真的值得花时间考虑吗?如果您需要保护,请寻找保护。这是另一个层次的混淆。取决于你做什么以及它有多独特。但我认为,如果你花同样的时间改进你的代码和你的商业模式,那将是更好的投资。或者只在本地制作关键部分,在 Java 中休息。你知道,原生更难调试和分析。甚至本机代码也可以反编译,只是更难。如果值得,它就会完成。如果不是,你为什么要这样做?如果需要,请考虑在线模型,您的代码不会离开您的手。
-
@Pihhan 我分享你的想法,我们在这里进行了同样的讨论:native 真的比 proguard 混淆更好吗?正如您所建议的,我们的目标是让我们的一部分代码在本地,其余的将是 Java。至于是否值得:它是一个不能在云中运行的算法,并且已经开发了多年。其次:这不是我的决定,在我们现在拥有的原生编译有好的替代方案之前,公司所有者不会允许迁移到 Arm。
标签: android android-ndk java-native-interface