在Android中对终端用户模糊JNI代码

Obscuring JNI Code From End Users in Android

本文关键字:模糊 JNI 代码 终端用户 Android      更新时间:2023-10-16

我写了一堆android JNI代码,我想为客户制作一个库。显然,我不希望客户能够看到我的JNI代码。是否有一种方法,我可以包括只是在一个库项目的so文件?

我已经尝试过使用System.loadLibrary(<library>);,但每次我都会得到一个不满意的链接错误。

有一件事是有效的,我刚刚编译了我的项目并删除了所有的c文件。我仍然可以使用。so文件,但如果我执行make clean,它会删除我的。so文件,没有源文件就无法恢复。

简而言之,我想要的是能够自己编译一个so文件,并将它与一些与之交互的java代码一起提供给我的客户。我不在乎他们是否看到java"包装器"源代码,但我不希望他们能够看到JNI代码。我还希望他们能够像对待其他库一样对待这个库(即make clean不要破坏它)。

谢谢!

是否有一种方法,我可以在一个库项目中为他们包含so文件?

打包一个包含库的AAR,并将AAR作为工件托管给您的客户。有关示例,请参阅我的cwc - anddown库。AAR将包含您所支持的任何体系结构的.so文件,以及为本机代码提供Java API的编译Java代码的JAR。

我还希望他们能够像对待其他库一样对待这个库(即make clean不要破坏它)。

嗯,根据定义, make clean 需要源代码。它还需要一个makefile,您可能不会分发它,因为没有源代码它是没有用的。